diff --git a/clearing-parent/fix-service/src/main/java/ru/spcex/clearing/fix/quickfix/Application.java b/clearing-parent/fix-service/src/main/java/ru/spcex/clearing/fix/quickfix/Application.java index 45a96494d..9a94fcf19 100644 --- a/clearing-parent/fix-service/src/main/java/ru/spcex/clearing/fix/quickfix/Application.java +++ b/clearing-parent/fix-service/src/main/java/ru/spcex/clearing/fix/quickfix/Application.java @@ -120,58 +120,56 @@ public class Application extends MessageCracker implements quickfix.Application, OrdStatus ordStatus = executionReport.getOrdStatus(); ClOrdID clOrdID = executionReport.getClOrdID(); - Pattern orderIdPattern = Pattern.compile("(\\d{6})-([A-Z]+)-(\\d+)"); -// Matcher matcher = orderIdPattern.matcher(orderId.getValue()); -// if (matcher.matches()) { -// LocalDate tradeDate = LocalDate.parse(matcher.group(1), DateTimeFormatter.ofPattern("yyMMdd")); -// String classCode = matcher.group(2); - Long orderNum = Long.parseLong(clOrdID.getValue()); + Long orderNum = null; + try { + orderNum = Long.parseLong(clOrdID.getValue()); + } catch (NumberFormatException ignore) {} - Imdg sOrdersImdg = transaction.getImdg(IMDGDistributedNames.Map_SOrders, SOrders.class); - SOrders sOrders = sOrdersImdg.getSingleObjectByPredicate(sOrdersImdg.predicateBuilder().and( - sOrdersImdg.predicateBuilder().equals("orderNum", orderNum), - sOrdersImdg.predicateBuilder().equals("classCode", exDestination.getValue()), - sOrdersImdg.predicateBuilder().equals("tradeDate", transactTime.getValue().toLocalDate()))); - if (sOrders == null) { - sOrders = new SOrders(); - sOrders.setId(imdgProvider.getImdgIdGenerator().nextId()); - sOrders.setOrderNum(orderNum); - sOrders.setExchangeOrderNum(orderId.getValue()); - sOrders.setClassCode(exDestination.getValue()); - sOrders.setTradeDate(transactTime.getValue().toLocalDate()); + Imdg sOrdersImdg = transaction.getImdg(IMDGDistributedNames.Map_SOrders, SOrders.class); + SOrders sOrders = sOrdersImdg.getSingleObjectByPredicate(sOrdersImdg.predicateBuilder().and( + sOrdersImdg.predicateBuilder().equals("orderNum", orderNum), + sOrdersImdg.predicateBuilder().equals("classCode", exDestination.getValue()), + sOrdersImdg.predicateBuilder().equals("tradeDate", transactTime.getValue().toLocalDate()))); + if (sOrders == null) { + sOrders = new SOrders(); + sOrders.setId(imdgProvider.getImdgIdGenerator().nextId()); + sOrders.setOrderNum(orderNum); + sOrders.setExchangeOrderNum(orderId.getValue()); + sOrders.setClassCode(exDestination.getValue()); + sOrders.setTradeDate(transactTime.getValue().toLocalDate()); - if (executionReport.isSetSecurityID()) - sOrders.setSecCode(executionReport.getSecurityID().getValue()); - if (executionReport.isSetPrice()) - sOrders.setPrice(BigDecimal.valueOf(executionReport.getPrice().getValue())); - if (executionReport.isSetOrderQty()) - sOrders.setQty(BigDecimal.valueOf(executionReport.getOrderQty().getValue())); - if (executionReport.isSetAccount()) - sOrders.setAccount(executionReport.getAccount().getValue()); - if (executionReport.isSetSettlType()) - sOrders.setSettleCode(executionReport.getSettlType().getValue()); - if (executionReport.isSetCurrency()) - sOrders.setPriceCurrency(executionReport.getCurrency().getValue()); + if (executionReport.isSetSecurityID()) + sOrders.setSecCode(executionReport.getSecurityID().getValue()); + if (executionReport.isSetPrice()) + sOrders.setPrice(BigDecimal.valueOf(executionReport.getPrice().getValue())); + if (executionReport.isSetOrderQty()) + sOrders.setQty(BigDecimal.valueOf(executionReport.getOrderQty().getValue())); + if (executionReport.isSetAccount()) + sOrders.setAccount(executionReport.getAccount().getValue()); + if (executionReport.isSetSettlType()) + sOrders.setSettleCode(executionReport.getSettlType().getValue()); + if (executionReport.isSetCurrency()) + sOrders.setPriceCurrency(executionReport.getCurrency().getValue()); - sOrders.setState(String.valueOf(ordStatus.getValue())); - if (ordStatus.valueEquals(OrdStatus.NEW)) { - sOrders.setOrderDateTime(transactTime.getValue().toInstant(ZoneOffset.UTC)); - } else if (ordStatus.valueEquals(OrdStatus.CANCELED)) { - sOrders.setWithdrawDateTime(transactTime.getValue().toInstant(ZoneOffset.UTC)); - } - sOrders.setCreated(Instant.now()); - sOrdersImdg.insert(sOrders); - } else { - sOrders.setState(String.valueOf(ordStatus.getValue())); - if (ordStatus.valueEquals(OrdStatus.NEW)) { - sOrders.setOrderDateTime(transactTime.getValue().toInstant(ZoneOffset.UTC)); - } else if (ordStatus.valueEquals(OrdStatus.CANCELED)) { - sOrders.setWithdrawDateTime(transactTime.getValue().toInstant(ZoneOffset.UTC)); - } - - sOrders.setUpdated(Instant.now()); - sOrdersImdg.update(sOrders); + sOrders.setState(String.valueOf(ordStatus.getValue())); + if (ordStatus.valueEquals(OrdStatus.NEW)) { + sOrders.setOrderDateTime(transactTime.getValue().toInstant(ZoneOffset.UTC)); + } else if (ordStatus.valueEquals(OrdStatus.CANCELED)) { + sOrders.setWithdrawDateTime(transactTime.getValue().toInstant(ZoneOffset.UTC)); } + sOrders.setCreated(Instant.now()); + sOrdersImdg.insert(sOrders); + } else { + sOrders.setState(String.valueOf(ordStatus.getValue())); + if (ordStatus.valueEquals(OrdStatus.NEW)) { + sOrders.setOrderDateTime(transactTime.getValue().toInstant(ZoneOffset.UTC)); + } else if (ordStatus.valueEquals(OrdStatus.CANCELED)) { + sOrders.setWithdrawDateTime(transactTime.getValue().toInstant(ZoneOffset.UTC)); + } + + sOrders.setUpdated(Instant.now()); + sOrdersImdg.update(sOrders); + } //send message to df for update orderCurrency status OrderCurrencyStatusUpdateRequest updateRequest = new OrderCurrencyStatusUpdateRequest();