|
|
@@ -128,7 +128,8 @@ public class CoinServiceImpl implements CoinService {
|
|
|
paramMap.put("pageSize", "20");
|
|
|
|
|
|
StringBuffer sb = new StringBuffer();
|
|
|
- for (int j = 1; j < 10; j++) {
|
|
|
+ // 交易员当前带单列表筛选
|
|
|
+ for (int j = 1; j < 5; j++) {
|
|
|
try {
|
|
|
paramMap.put("pageNo", j + "");
|
|
|
JSONObject response = requestApi4Common("/api/mix/v1/trace/report/order/currentList", null, JSONObject.toJSONString(paramMap), JsoupUtil.HTTP_POST, paramMap);
|
|
|
@@ -157,9 +158,9 @@ public class CoinServiceImpl implements CoinService {
|
|
|
} catch (Exception e) {
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ // 交易员历史带单列表筛选
|
|
|
if (sb.length() == 0) {
|
|
|
- for (int j = 1; j < 10; j++) {
|
|
|
+ for (int j = 1; j < 5; j++) {
|
|
|
try {
|
|
|
paramMap.put("pageNo", j + "");
|
|
|
JSONObject response = requestApi4Common("/api/mix/v1/trace/report/order/historyList", null, JSONObject.toJSONString(paramMap), JsoupUtil.HTTP_POST, paramMap);
|
|
|
@@ -168,7 +169,7 @@ public class CoinServiceImpl implements CoinService {
|
|
|
JSONObject order = orderList.getJSONObject(i);
|
|
|
String trackingNo1 = order.getString("trackingNo");
|
|
|
if (trackingNo.equals(trackingNo1)) {
|
|
|
- sb.append("<table border=\"1\" cellspacing=\"0\"><tr><th>键</th><th>值</th></tr>");
|
|
|
+ sb.append("<table border=\"1\" cellspacing=\"0\" style=\"font-size: 20px;\"><tr><th>键</th><th>值</th></tr>");
|
|
|
sb.append("<tr><td>交易对</td><td>").append(order.getString("symbol")).append("</td></tr>");
|
|
|
sb.append("<tr><td>持仓方向</td><td>").append(InitRunner.publicParamsMap.get("holdSide").getString(order.getString("holdSide"))).append("</td></tr>");
|
|
|
sb.append("<tr><td>杠杆倍数</td><td>").append(order.getString("leverage")).append("</td></tr>");
|
|
|
@@ -195,10 +196,46 @@ public class CoinServiceImpl implements CoinService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ public String orderDetail2(String orderId, String symbol) {
|
|
|
+ Map<String, String> paramMap = new LinkedHashMap<>();
|
|
|
+ paramMap.put("symbol", symbol);
|
|
|
+ paramMap.put("orderId", orderId);
|
|
|
+
|
|
|
+ StringBuffer sb = new StringBuffer("<table border=\"1\" cellspacing=\"0\" style=\"font-size: 20px;\"><tr><th>键</th><th>值</th></tr>");
|
|
|
+ // 获取订单详情
|
|
|
+ try {
|
|
|
+ String signQueryString = paramMap.entrySet().stream().map(e -> e.getKey() + "=" + e.getValue()).collect(Collectors.joining("&"));
|
|
|
+ JSONObject response = requestApi4Common("/api/mix/v1/order/detail", signQueryString, null, JsoupUtil.HTTP_GET, paramMap);
|
|
|
+ JSONObject order = response.getJSONObject("data");
|
|
|
+
|
|
|
+ sb.append("<tr><td>交易对</td><td>").append(order.getString("symbol")).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>交易方向</td><td>").append(InitRunner.publicParamsMap.get("side").getString(order.getString("side"))).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>杠杆倍数</td><td>").append(order.getString("leverage")).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>成交均价</td><td>").append(order.getString("priceAvg")).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>委托价格</td><td>").append(order.getString("price")).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>手续费</td><td>").append(order.getString("fee")).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>订单状态</td><td>").append(InitRunner.publicParamsMap.get("state").getString(order.getString("state"))).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>交易类型</td><td>").append(InitRunner.publicParamsMap.get("orderType").getString(order.getString("orderType"))).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>总盈亏</td><td>").append(order.getString("totalProfits")).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>预设止盈价格</td><td>").append(order.getString("presetTakeProfitPrice")).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>预设止损价格</td><td>").append(order.getString("presetStopLossPrice")).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>创建时间</td><td>").append(DateUtils.longToString(order.getLong("cTime"))).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>更新时间</td><td>").append(DateUtils.longToString(order.getLong("uTime"))).append("</td></tr>");
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("orderDetail2 error,orderId={},symbol={}", orderId, symbol, e);
|
|
|
+ }
|
|
|
+
|
|
|
+ sb.append("</table>");
|
|
|
+
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
public String monitorJob() {
|
|
|
+ // 开仓平仓监控报警
|
|
|
scheduler.scheduleWithFixedDelay(() -> {
|
|
|
LocalDateTime endTime = LocalDateTime.now();
|
|
|
- // 全部历史委托监控
|
|
|
+ // 全部历史委托列表
|
|
|
Map<String, String> paramMap = new LinkedHashMap<>();
|
|
|
paramMap.put("productType", "umcbl");
|
|
|
paramMap.put("startTime", String.valueOf(DateUtils.localDateTimeToMilliseconds(endTime.minusMinutes(1))));
|
|
|
@@ -214,10 +251,22 @@ public class CoinServiceImpl implements CoinService {
|
|
|
JSONObject order = orderList.getJSONObject(i);
|
|
|
LocalDateTime cTime = DateUtils.longToLocalDateTime(order.getLong("cTime"));
|
|
|
String orderId = order.getString("orderId");
|
|
|
+ String symbol = order.getString("symbol");
|
|
|
if (Duration.between(cTime, endTime).getSeconds() < 50 && !orderMap.containsKey(orderId)) {
|
|
|
orderMap.put(orderId, "1");
|
|
|
- String content = order.getString("symbol") + "委托单已经触发,成交均价为" + order.getString("priceAvg");
|
|
|
- SpringUtils.getBean(CoinServiceImpl.class).monitorAlarm(content, JOB_ALARM_MODE_APP_TEXT_CARD);
|
|
|
+
|
|
|
+ String content = "<div class=\"highlight\">交易对:" + order.getString("symbol") + "</div>" +
|
|
|
+ "<div>交易方向:" + InitRunner.publicParamsMap.get("side").getString(order.getString("side")) + "</div>" +
|
|
|
+ "<div>杠杆倍数:" + order.getString("leverage") + "</div>" +
|
|
|
+ "<div>成交均价:" + order.getString("openPrice") + "</div>" +
|
|
|
+ "<div>订单状态:" + InitRunner.publicParamsMap.get("state").getString(order.getString("state")) + "</div>" +
|
|
|
+ "<div>订单类型:" + InitRunner.publicParamsMap.get("orderType").getString(order.getString("orderType")) + "</div>" +
|
|
|
+ "<div class=\"gray\">订单时间:" + DateUtils.longToString(order.getLong("cTime")) + "</div>";
|
|
|
+ JSONObject params = new JSONObject();
|
|
|
+ params.put("title", order.getString("side").contains("open") ? "开仓" : "平仓" + "监控报警");
|
|
|
+ params.put("logUrl", "https://jav.lvzhiqiang.top/coin/orderDetail2/" + orderId + "/" + symbol);
|
|
|
+ params.put("btnTxt", "订单详情");
|
|
|
+ SpringUtils.getBean(CoinServiceImpl.class).monitorAlarm4APP_TEXT_CARD(content, params);
|
|
|
}
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
@@ -290,6 +339,7 @@ public class CoinServiceImpl implements CoinService {
|
|
|
}
|
|
|
}, 0, 5, TimeUnit.SECONDS);
|
|
|
|
|
|
+ // 跟单员监控报警
|
|
|
scheduler.scheduleWithFixedDelay(() -> {
|
|
|
LocalDateTime endTime = LocalDateTime.now();
|
|
|
// 交易员当前带单列表
|
|
|
@@ -309,17 +359,6 @@ public class CoinServiceImpl implements CoinService {
|
|
|
if (Duration.between(openTime, endTime).getSeconds() < 50 && !orderMap.containsKey(trackingNo)) {
|
|
|
orderMap.put(trackingNo, "1");
|
|
|
|
|
|
- /*String content = "交易对:" + order.getString("symbol") + "\n" +
|
|
|
- "持仓方向:" + InitRunner.publicParamsMap.get("holdSide").getString(order.getString("holdSide")) + "\n" +
|
|
|
- "杠杆:" + order.getString("leverage") + "\n" +
|
|
|
- "开仓均价:" + order.getString("openPrice") + "\n" +
|
|
|
- "开仓时间:" + DateUtils.longToString(order.getLong("openTime")) + "\n" +
|
|
|
- "此笔订单跟单人数:" + order.getString("followerNum") + "\n" +
|
|
|
- "保证金:" + order.getString("marginAmount") + "\n" +
|
|
|
- "止盈价:" + order.getString("takeProfitPrice") + "\n" +
|
|
|
- "止损价:" + order.getString("stopLossPrice") + "\n" +
|
|
|
- "交易员:" + "hale" + ",跟单号:" + order.getString("trackingNo");*/
|
|
|
-
|
|
|
String content = "<div class=\"highlight\">交易对:" + order.getString("symbol") + "</div>" +
|
|
|
"<div>持仓方向:" + InitRunner.publicParamsMap.get("holdSide").getString(order.getString("holdSide")) + "</div>" +
|
|
|
"<div>杠杆倍数:" + order.getString("leverage") + "</div>" +
|