Esempio n. 1
0
        public void 매도완료처리및종목대기상태전환()
        {
            log.Info("매도완료처리및종목대기상태전환 start");

            // tbl_stock_myorderlist 에서 불러옴
            List <StockMyOrder> 매도완료업데이트대상 = dacStock.매도완료업데이트대상조회(inqDate);

            log.Info("매도완료업데이트대상 count:" + 매도완료업데이트대상.Count);

            for (int i = 0; i < 매도완료업데이트대상.Count; i++)
            {
                List <StockOrder> orderList = dacStock.tbl_stock_order_주문조회(inqDate, 매도완료업데이트대상[i].stockCode, "매도", "요청중");

                if (orderList == null || orderList.Count < 1)
                {
                    continue;
                }

                StockOrder 매도요청중인주문 = orderList[0];

                if (매도요청중인주문 == null)
                {
                    continue;
                }

                log.Info("매도완료업데이트대상: " + JsonConvert.SerializeObject(매도완료업데이트대상[i]));
                log.Info("매도요청중인주문: " + JsonConvert.SerializeObject(매도요청중인주문));

                int qty   = Util.GetInt(매도완료업데이트대상[i].Qty);
                int price = Util.GetInt(매도완료업데이트대상[i].Price);

                int orderQty   = Util.GetInt(매도요청중인주문.Qty);
                int orderPrice = Util.GetInt(매도요청중인주문.Price);

                // 주문번호가 다르면 제외
                if (!string.IsNullOrWhiteSpace(매도요청중인주문.orderNo) && !매도요청중인주문.orderNo.Equals(매도완료업데이트대상[i].orderNo))
                {
                    log.Info("주문번호 다름");
                    continue;
                }

                // 수량이나 가격이 다를 경우 제외
                if (qty != orderQty || price != orderPrice)
                {
                    log.Info("수량 or 금액 다름 ");
                    continue;
                }

                log.Info("매도완료업데이트 진행");

                매도요청중인주문.ConfirmQty   = 매도완료업데이트대상[i].confirmQty;
                매도요청중인주문.ConfirmPrice = 매도완료업데이트대상[i].confirmPrice;
                매도요청중인주문.Status       = "완료";

                if (string.IsNullOrWhiteSpace(매도요청중인주문.orderNo))
                {
                    매도요청중인주문.orderNo = 매도완료업데이트대상[i].orderNo;
                }

                // tbl_stock_order 업데이트
                dacStock.주문정보업데이트_byOrderSeq(매도요청중인주문);

                // myOrderList 에 동기화필드업데이트
                dacStock.주문내역동기화완료처리(매도완료업데이트대상[i].seq);

                // tbl_stock_target 업데이트
                dacStock.주식상태대기로변경(inqDate, 매도완료업데이트대상[i].stockCode, 매도완료업데이트대상[i].confirmQty, 매도완료업데이트대상[i].confirmPrice);

                if (qty * price > 0)
                {
                    TotalBalance += qty * price;

                    // 세금제외
                    TotalBalance -= (int)(qty * price * 0.0033);
                }

                // 그 사이 추가매수요청이 있을 수 있기때문에 이 요청을 취소한다.
                subBiz.매수요청건조회및취소(inqDate, 매도완료업데이트대상[i].stockCode, string.Empty);
            }

            log.Info("매도완료처리및종목대기상태전환 end");
        }