Exemple #1
0
        private void Opt10015_OnReceived(string sRQName, DataTable dt, int sPreNext)
        {
            TaskCompletionSource <bool> tcs = null;

            tcs = new TaskCompletionSource <bool>();

            string[] sRQNameArray = sRQName.Split(',');

            string stockCode    = "";
            string stdDate      = "";
            string maxDate      = "";
            string minDate      = "";
            string chainMaxDate = "";

            stockCode = ClsAxKH.RetStockCodeBysRqName(ClsAxKH.OptType.Opt10015, sRQName);
            stdDate   = ClsAxKH.RetStdDateBysRqName(ClsAxKH.OptType.Opt10015, sRQName);

            try
            {
                if (dt != null)
                {
                    maxDate = dt.Compute("max([일자])", string.Empty).ToString().Trim();
                    minDate = dt.Compute("min([일자])", string.Empty).ToString().Trim();

                    ClsDbLogger.OptCallMagamStoredData(actionGb: "A", optCaller: "OPT10015", stockCode: stockCode, stdDate: stdDate, maxDate: maxDate, minDate: minDate, jobIngGb: "", chainCompGb: "", chainMaxDate: "", chainMinDate: "");

                    var rows = _dtOptCalMagam.AsEnumerable().Where(Row => Row.Field <string>("STOCK_CODE") == stockCode);

                    foreach (DataRow dr2th in rows)
                    {
                        if (dr2th["CHAIN_COMP_GB"].ToString().Trim() == "Y")
                        {
                            chainMaxDate = dr2th["CHAIN_MAX_DATE"].ToString().Trim();
                        }
                    }
                }


                if (tcs == null || tcs.Task.IsCompleted)
                {
                    return;
                }

                if (dt != null)
                {
                    ArrayParam arrParam = new ArrayParam();
                    Sql        oSql     = new Sql(SDataAccess.ClsServerInfo.VADISSEVER, "KIWOOMDB");


                    foreach (DataRow dr in dt.Rows)
                    {
                        WriteTextSafe(stockCode + "(" + dr["일자"] + ")");

                        arrParam.Clear();
                        arrParam.Add("@ACTION_GB", "A");
                        arrParam.Add("@STOCK_CODE", stockCode);
                        arrParam.Add("@STOCK_DATE", dr["일자"].ToString());
                        arrParam.Add("@LAST_PRICE", dr["종가"]);
                        arrParam.Add("@OAGO_DAEBI_SYMBOL", dr["전일대비기호"]);
                        arrParam.Add("@OAGO_DAEBI", dr["전일대비"]);
                        arrParam.Add("@UPDOWN_RATE", dr["등락율"]);
                        arrParam.Add("@TRADE_QTY", dr["거래량"]);
                        arrParam.Add("@TRADE_DAEGUM", dr["거래대금"]);
                        arrParam.Add("@BETRADE_QTY", dr["장전거래량"]);
                        arrParam.Add("@BETRADE_BIJUNG", dr["장전거래비중"]);
                        arrParam.Add("@INTRADE_QTY", dr["장중거래량"]);
                        arrParam.Add("@INTRADE_BIJUNG", dr["장중거래비중"]);
                        arrParam.Add("@AFTRADE_QTY", dr["장후거래량"]);
                        arrParam.Add("@AFTRADE_BIJUNG", dr["장후거래비중"]);
                        arrParam.Add("@SUM3", dr["합계3"]);
                        arrParam.Add("@GITRADE_QTY", dr["기간중거래량"]);
                        arrParam.Add("@BETRADE_DAEGUM", dr["장전거래대금"]);
                        arrParam.Add("@BETRADE_DBIJUNG", dr["장전거래대금비중"]);
                        arrParam.Add("@INTRADE_DAEGUM", dr["장중거래대금"]);
                        arrParam.Add("@INTRADE_DBIJUNG", dr["장중거래대금비중"]);
                        arrParam.Add("@AFTRADE_DAEGUM", dr["장후거래대금"]);
                        arrParam.Add("@AFTRADE_DBIJUNG", dr["장후거래대금비중"]);
                        arrParam.Add("@DEUNG_DATE", "");
                        arrParam.Add("@DEUNG_TIME", "");
                        arrParam.Add("@R_ERRORCD", -1, SqlDbType.Int, ParameterDirection.InputOutput);

                        oSql.ExecuteNonQuery("p_Opt10015Add", CommandType.StoredProcedure, arrParam);

                        if (chainMaxDate != "")
                        {
                            if (chainMaxDate == dr["일자"].ToString().Trim())
                            {
                                ClsDbLogger.OptCallMagamStoredData(actionGb: "A", optCaller: "OPT10015", stockCode: stockCode, stdDate: stdDate, maxDate: maxDate, minDate: minDate, jobIngGb: "C", chainCompGb: "", chainMaxDate: "", chainMinDate: "");
                                _opt10015.Dispose();

                                tcs.SetResult(true);

                                WaitTime();

                                OnGetStockCode();

                                return;
                            }
                        }
                    }
                }

                // 최근 거래일 100일을 가져오는걸로 한다면
                if (chk100.Checked == true)
                {
                    ClsDbLogger.OptCallMagamStoredData(actionGb: "A", optCaller: "OPT10015", stockCode: stockCode, stdDate: stdDate, maxDate: maxDate, minDate: minDate, jobIngGb: "C", chainCompGb: "", chainMaxDate: "", chainMinDate: "");

                    _opt10015.Dispose();

                    tcs.SetResult(true);

                    OnGetStockCode();

                    return;
                }
                else
                {
                    if (sPreNext == 2)
                    {
                        tcs.SetResult(true);

                        ClsDbLogger.OptCallMagamStoredData(actionGb: "A", optCaller: "OPT10015", stockCode: stockCode, stdDate: stdDate, maxDate: maxDate, minDate: minDate, jobIngGb: "S", chainCompGb: "", chainMaxDate: "", chainMinDate: "");

                        WaitTime();

                        _opt10015.SetInit(_FormId);
                        _opt10015.JustRequest(StockCode: sRQNameArray[1].ToString().Trim(), StartDate: sRQNameArray[2].ToString().Trim(), StockName: "", nPrevNext: 2);

                        OPS10060.Text = ClsAxKH._limitCount.ToString();
                        lblTime.Text  = ClsAxKH._limitTime.ToString();

                        return;
                    }
                    else
                    {
                        if (dt != null)
                        {
                            ClsDbLogger.OptCallMagamStoredData(actionGb: "CE", optCaller: "OPT10015", stockCode: stockCode, stdDate: stdDate, maxDate: maxDate, minDate: minDate, jobIngGb: "C", chainCompGb: "", chainMaxDate: "", chainMinDate: minDate);
                        }
                        else
                        {
                            ClsDbLogger.OptCallMagamStoredData(actionGb: "EE", optCaller: "OPT10015", stockCode: stockCode, stdDate: stdDate, maxDate: maxDate, minDate: minDate, jobIngGb: "F", chainCompGb: "", chainMaxDate: "", chainMinDate: minDate);
                        }

                        _opt10015.Dispose();

                        tcs.SetResult(true);

                        OnGetStockCode();

                        return;
                    }
                }
            }

            catch (Exception ex)
            {
                _opt10015.Dispose();

                tcs.SetResult(true);

                OnGetStockCode();

                MessageBox.Show(ex.Message.ToString());
                throw;
            }
        }
Exemple #2
0
        public static void SendCommRqData(OptType optType, ArrayList optCall, string sRQName, string sTrCode, int nPrevNext, string sScreenNo)
        {
            lock (lockObject)
            {
                string stockCode = "";

                ArrayList arrlist = new ArrayList();
                arrlist.Add(sRQName);
                arrlist.Add(sTrCode);
                arrlist.Add(nPrevNext);
                arrlist.Add(sScreenNo);

                AxKHQueueList.Enqueue(arrlist);

                ArrayList item;

                AxKHQueueList.TryDequeue(out item);

                string sRQNameSet = "";

                switch (optType)
                {
                case OptType.Opt10001:
                    //_stockCode10001 = "";

                    //_stockCode10001 = optCall[0].ToString();
                    stockCode = optCall[0].ToString();
                    Opt10001(stockCode: optCall[0].ToString());

                    break;

                case OptType.Opt10005:
                    //_stockCode10005 = "";

                    //_stockCode10005 = optCall[0].ToString();

                    stockCode = optCall[0].ToString();
                    Opt10005(stockCode: optCall[0].ToString());
                    break;

                case OptType.Opt10015:
                    //_stockCode10015 = "";

                    //_stockCode10015 = optCall[0].ToString();
                    stockCode = optCall[0].ToString();
                    Opt10015(stockCode: optCall[0].ToString(), startDate: optCall[1].ToString());
                    break;

                case OptType.Opt10081:
                    //_stockCode10081 = "";

                    //_stockCode10081 = optCall[0].ToString();
                    stockCode = optCall[0].ToString();
                    Opt10081(stockCode: optCall[0].ToString(), stdDate: optCall[1].ToString(), modifyJugaGb: optCall[2].ToString());
                    break;

                case OptType.Opt10086:
                    // _stockCode10086 = "";

                    //_stockCode10086 = optCall[0].ToString();
                    stockCode = optCall[0].ToString();
                    Opt10086(stockCode: optCall[0].ToString(), stdDate: optCall[1].ToString(), displayGb: optCall[2].ToString());
                    break;

                case OptType.Opt10060:
                    // _stockCode10060 = "";
                    //_stockCode10060 = optCall[1].ToString();
                    stockCode = optCall[1].ToString();
                    Opt10060(startDate: optCall[0].ToString(), stockCode: optCall[1].ToString(), amountQtyGb: optCall[2].ToString(), maeMaeGb: optCall[3].ToString(), unitGb: optCall[4].ToString());
                    break;

                case OptType.Opt20068:
                    //_stockCode20068 = "";
                    //_stockCode20068 = optCall[3].ToString();
                    stockCode = optCall[3].ToString();
                    Opt20068(startDate: optCall[0].ToString(), endDate: optCall[1].ToString(), allGb: optCall[2].ToString(), stockCode: optCall[3].ToString());
                    break;

                case OptType.Opt90002:
                    //_kthCode90002 = "";
                    //_kthCode90002 = optCall[1].ToString();
                    stockCode = optCall[1].ToString();
                    Opt90002(dateGb: optCall[0].ToString(), kthCode: optCall[1].ToString());
                    break;

                default:
                    return;
                }

                for (int i = 0; i < optCall.Count; i++)
                {
                    if (sRQNameSet == "")
                    {
                        sRQNameSet = optCall[i].ToString();
                    }
                    else
                    {
                        sRQNameSet = sRQNameSet + "," + optCall[i].ToString();
                    }
                }

                ClsDbLogger.StoreLogger(loggergb: ClsDbLogger.LoggerGb.SendLoger, optCallNo: item[0].ToString() + " : " + "SetInputValue", transText: sRQNameSet);

                string sCommRqData = "";

                for (int i = 0; i < item.Count; i++)
                {
                    if (sCommRqData == "")
                    {
                        sCommRqData = item[i].ToString();
                    }
                    else
                    {
                        sCommRqData = sCommRqData + "," + item[i].ToString();
                    }
                }

                if (SPEED_CALL == true)
                {
                    SpeedSpendTime();
                }
                else
                {
                    RegularSpandTime();
                }

                ClsDbLogger.StoreLogger(loggergb: ClsDbLogger.LoggerGb.SendLoger, optCallNo: item[0].ToString() + " : " + "CommRqData", transText: sRQNameSet + "@" + sCommRqData);

                int nRet = AxKH.CommRqData(sRQName: item[0].ToString() + "," + sRQNameSet, sTrCode: item[1].ToString(), nPrevNext: Convert.ToInt32(item[2]), sScreenNo: item[3].ToString());

                //_CallOptTime = DateTime.Now;

                SendsRQName = item[0].ToString() + "," + sRQNameSet;

                //if (aTimer.Enabled == false)
                //{
                //    // StartTimer();
                //}

                if (ClsWoomErrorCode.GetErrorMessage(nRet) == true)
                {
                    //   Logger(Log.일반, "[OPT10081] : " + lsWoomErrorCode.GetErrorMessage());
                }
                else
                {
                    string erroText = ClsWoomErrorCode.GetErrorMessage();
                    ClsDbLogger.StoreLogger(loggergb: ClsDbLogger.LoggerGb.ErrorLoger, optCallNo: item[0].ToString(), transText: erroText);

                    // Logger(Log.에러, "[OPT10081] : " + Error.GetErrorMessage());
                }
            }
        }
Exemple #3
0
        public static void AxKH_OnReceiveTrData(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            //  StopTimer();

            DataTable dt = new DataTable();
            object    handler;
            int       nCnt = 0;

            nCnt = ClsAxKH.AxKH.GetRepeatCnt(e.sTrCode, e.sRQName);

            ClsUtil clsUtil = new ClsUtil();

            //stockCode = clsUtil.Mid(e.sRQName, 1, 6);
            //sRQName = e.sRQName.ToString().Replace(stockCode + "_", "");

            string[] sRQNameArray = e.sRQName.ToString().Trim().Split(',');

            ClsDbLogger.StoreLogger(loggergb: ClsDbLogger.LoggerGb.RecieveLoger, optCallNo: "AxKH_OnReceiveTrData", transText: e.sTrCode.ToString().Trim() + "@" + e.sRQName.ToString().Trim());

            switch (sRQNameArray[0].ToString().Trim())
            {
            case "주식기본정보요청":

                try
                {
                    using (ClsColumnSets oBasicDataType = new ClsColumnSets())
                    {
                        foreach (int i in Enum.GetValues(typeof(ClsColumnSets.Column10001Index)))
                        {
                            int j = 0;
                            j = (int)Enum.Parse(typeof(ClsColumnSets.ColumnNameIndex), Enum.GetName(typeof(ClsColumnSets.Column10001Index), i));
                            dt.Columns.Add(oBasicDataType.GetDataColumn10001((ClsColumnSets.ColumnNameIndex)j));
                        }
                    };

                    handler = AxKH_10001_OnReceived;

                    DataRow dr2th = dt.NewRow();
                    for (int intColumName = 0; intColumName < dt.Columns.Count; intColumName++)
                    {
                        var type = dt.Columns[intColumName].DataType;

                        dr2th[dt.Columns[intColumName].ColumnName.ToString()] = Convert.ChangeType(ClsAxKH.AxKH.GetCommData(e.sTrCode, e.sRQName, 0, dt.Columns[intColumName].ColumnName.ToString()).ToString().Trim(), type);
                    }

                    dt.Rows.Add(dr2th);

                    if (handler != null)
                    {
                        if (Convert.ToInt32(e.sPrevNext) != 2)
                        {
                            //_OptStatus.InitOptCallingStatus();
                        }
                        //AxKH_10081_OnReceived(e.sTrCode, dt, Convert.ToInt32(e.sPrevNext));
                        AxKH_10001_OnReceived(e.sRQName.ToString().Trim(), dt, Convert.ToInt32(e.sPrevNext));
                        return;
                    }

                    break;
                }
                catch (Exception)
                {
                    AxKH_10001_OnReceived(e.sRQName.ToString().Trim(), null, Convert.ToInt32(e.sPrevNext));
                    throw;
                }

            case "주식일주월시분요청":
                using (ClsColumnSets oBasicDataType = new ClsColumnSets())
                {
                    foreach (int i in Enum.GetValues(typeof(ClsColumnSets.Column10005Index)))
                    {
                        int j = 0;
                        j = (int)Enum.Parse(typeof(ClsColumnSets.ColumnNameIndex), Enum.GetName(typeof(ClsColumnSets.Column10005Index), i));
                        dt.Columns.Add(oBasicDataType.GetDataColumn10001((ClsColumnSets.ColumnNameIndex)j));
                    }
                };

                handler = AxKH_10005_OnReceived;


                if (nCnt == 0)
                {
                    if (handler != null)
                    {
                        //_OptStatus.InitOptCallingStatus();
                        AxKH_10005_OnReceived(e.sRQName.ToString().Trim(), null, 0);
                        return;
                    }
                }

                for (int i = 0; i < nCnt; i++)
                {
                    DataRow dr = dt.NewRow();
                    for (int intColumName = 0; intColumName < dt.Columns.Count; intColumName++)
                    {
                        var type = dt.Columns[intColumName].DataType;
                        dr[dt.Columns[intColumName].ColumnName.ToString()] = Convert.ChangeType(ClsAxKH.AxKH.GetCommData(e.sTrCode, e.sRQName, i, dt.Columns[intColumName].ColumnName.ToString()).ToString().Trim(), type);
                    }

                    dt.Rows.Add(dr);
                }

                if (handler != null)
                {
                    if (Convert.ToInt32(e.sPrevNext) != 2)
                    {
                        //_OptStatus.InitOptCallingStatus();
                    }

                    AxKH_10005_OnReceived(e.sRQName.ToString().Trim(), dt, Convert.ToInt32(e.sPrevNext));
                    return;
                }


                break;

            case "일별거래상세요청":
                using (ClsColumnSets oBasicDataType = new ClsColumnSets())
                {
                    foreach (int i in Enum.GetValues(typeof(ClsColumnSets.Column10015Index)))
                    {
                        int j = 0;
                        j = (int)Enum.Parse(typeof(ClsColumnSets.ColumnNameIndex), Enum.GetName(typeof(ClsColumnSets.Column10015Index), i));
                        dt.Columns.Add(oBasicDataType.GetDataColumn((ClsColumnSets.ColumnNameIndex)j));
                    }
                };

                handler = AxKH_10015_OnReceived;

                if (nCnt == 0)
                {
                    if (handler != null)
                    {
                        //_OptStatus.InitOptCallingStatus();
                        AxKH_10015_OnReceived(e.sRQName.ToString().Trim(), null, 0);
                        return;
                    }
                }

                for (int i = 0; i < nCnt; i++)
                {
                    DataRow dr = dt.NewRow();
                    for (int intColumName = 0; intColumName < dt.Columns.Count; intColumName++)
                    {
                        var type = dt.Columns[intColumName].DataType;
                        dr[dt.Columns[intColumName].ColumnName.ToString()] = Convert.ChangeType(ClsAxKH.AxKH.GetCommData(e.sTrCode, e.sRQName, i, dt.Columns[intColumName].ColumnName.ToString()).ToString().Trim(), type);
                    }

                    dt.Rows.Add(dr);
                }

                if (handler != null)
                {
                    if (Convert.ToInt32(e.sPrevNext) != 2)
                    {
                        //_OptStatus.InitOptCallingStatus();
                    }
                    //AxKH_10015_OnReceived(e.sTrCode, dt, Convert.ToInt32(e.sPrevNext));
                    AxKH_10015_OnReceived(e.sRQName.ToString().Trim(), dt, Convert.ToInt32(e.sPrevNext));
                    return;
                }

                break;


            case "공매도추이요청 ":
                using (ClsColumnSets oBasicDataType = new ClsColumnSets())
                {
                    foreach (int i in Enum.GetValues(typeof(ClsColumnSets.Column10014Index)))
                    {
                        int j = 0;
                        j = (int)Enum.Parse(typeof(ClsColumnSets.ColumnNameIndex), Enum.GetName(typeof(ClsColumnSets.Column10014Index), i));
                        dt.Columns.Add(oBasicDataType.GetDataColumn((ClsColumnSets.ColumnNameIndex)j));
                    }
                };
                handler = AxKH_10014_OnReceived;

                if (nCnt == 0)
                {
                    if (handler != null)
                    {
                        //_OptStatus.InitOptCallingStatus();
                        AxKH_10014_OnReceived(e.sRQName.ToString().Trim(), null, 0);
                        return;
                    }
                }

                for (int i = 0; i < nCnt; i++)
                {
                    DataRow dr = dt.NewRow();
                    for (int intColumName = 0; intColumName < dt.Columns.Count; intColumName++)
                    {
                        var type = dt.Columns[intColumName].DataType;
                        dr[dt.Columns[intColumName].ColumnName.ToString()] = Convert.ChangeType(ClsAxKH.AxKH.GetCommData(e.sTrCode, e.sRQName, i, dt.Columns[intColumName].ColumnName.ToString()).ToString().Trim(), type);
                    }

                    dt.Rows.Add(dr);
                }

                if (handler != null)
                {
                    if (Convert.ToInt32(e.sPrevNext) != 2)
                    {
                        //_OptStatus.InitOptCallingStatus();
                    }

                    AxKH_10014_OnReceived(e.sRQName.ToString().Trim(), dt, Convert.ToInt32(e.sPrevNext));
                    return;
                }

                break;

            case "주식일봉차트조회":
                using (ClsColumnSets oBasicDataType = new ClsColumnSets())
                {
                    foreach (int i in Enum.GetValues(typeof(ClsColumnSets.Column10081Index)))
                    {
                        int j = 0;
                        j = (int)Enum.Parse(typeof(ClsColumnSets.ColumnNameIndex), Enum.GetName(typeof(ClsColumnSets.Column10081Index), i));
                        dt.Columns.Add(oBasicDataType.GetDataColumn((ClsColumnSets.ColumnNameIndex)j));
                    }
                };

                handler = AxKH_10081_OnReceived;

                if (nCnt == 0)
                {
                    if (handler != null)
                    {
                        //_OptStatus.InitOptCallingStatus();
                        AxKH_10081_OnReceived(e.sRQName.ToString().Trim(), null, 0);
                        return;
                    }
                }

                for (int i = 0; i < nCnt; i++)
                {
                    DataRow dr = dt.NewRow();
                    for (int intColumName = 0; intColumName < dt.Columns.Count; intColumName++)
                    {
                        var type = dt.Columns[intColumName].DataType;
                        dr[dt.Columns[intColumName].ColumnName.ToString()] = Convert.ChangeType(ClsAxKH.AxKH.GetCommData(e.sTrCode, e.sRQName, i, dt.Columns[intColumName].ColumnName.ToString()).ToString().Trim(), type);
                    }

                    dt.Rows.Add(dr);
                }

                if (handler != null)
                {
                    if (Convert.ToInt32(e.sPrevNext) != 2)
                    {
                        //_OptStatus.InitOptCallingStatus();
                    }
                    //AxKH_10081_OnReceived(e.sTrCode, dt, Convert.ToInt32(e.sPrevNext));
                    AxKH_10081_OnReceived(e.sRQName.ToString().Trim(), dt, Convert.ToInt32(e.sPrevNext));
                    return;
                }

                break;

            case "종목별투자자기관별차트요청":
                try
                {
                    using (ClsColumnSets oBasicDataType = new ClsColumnSets())
                    {
                        foreach (int i in Enum.GetValues(typeof(ClsColumnSets.Column10060Index)))
                        {
                            int j = 0;
                            j = (int)Enum.Parse(typeof(ClsColumnSets.ColumnNameIndex), Enum.GetName(typeof(ClsColumnSets.Column10060Index), i));
                            // _dt.Columns.Add(oBasicDataType.GetDataColumn((ClsColumnSets.ColumnNameIndex)i));
                            dt.Columns.Add(oBasicDataType.GetDataColumn((ClsColumnSets.ColumnNameIndex)j));
                        }
                    };

                    handler = AxKH_10060_OnReceived;

                    if (nCnt == 0)
                    {
                        if (handler != null)
                        {
                            //_OptStatus.InitOptCallingStatus();
                            AxKH_10060_OnReceived(e.sRQName.ToString().Trim(), null, 0);
                            return;
                        }
                    }

                    for (int i = 0; i < nCnt; i++)
                    {
                        DataRow dr = dt.NewRow();
                        for (int intColumName = 0; intColumName < dt.Columns.Count; intColumName++)
                        {
                            var type = dt.Columns[intColumName].DataType;
                            dr[dt.Columns[intColumName].ColumnName.ToString()] = Convert.ChangeType(ClsAxKH.AxKH.GetCommData(e.sTrCode, e.sRQName, i, dt.Columns[intColumName].ColumnName.ToString()).ToString().Trim(), type);
                        }

                        dt.Rows.Add(dr);
                    }

                    if (handler != null)
                    {
                        if (Convert.ToInt32(e.sPrevNext) != 2)
                        {
                            //_OptStatus.InitOptCallingStatus();
                        }

                        AxKH_10060_OnReceived(e.sRQName.ToString().Trim(), dt, Convert.ToInt32(e.sPrevNext));
                        return;
                    }
                    else
                    {
                        AxKH_10060_OnReceived(e.sRQName.ToString().Trim(), null, 0);
                        return;
                    }
                }
                catch (Exception)
                {
                    AxKH_10060_OnReceived(e.sRQName.ToString().Trim(), null, 0);
                    break;
                    throw;
                }



            case "대차거래추이요청(종목별)":
                using (ClsColumnSets oBasicDataType = new ClsColumnSets())
                {
                    foreach (int i in Enum.GetValues(typeof(ClsColumnSets.Column20068Index)))
                    {
                        int j = 0;
                        j = (int)Enum.Parse(typeof(ClsColumnSets.ColumnNameIndex), Enum.GetName(typeof(ClsColumnSets.Column20068Index), i));
                        // _dt.Columns.Add(oBasicDataType.GetDataColumn((ClsColumnSets.ColumnNameIndex)i));
                        dt.Columns.Add(oBasicDataType.GetDataColumn((ClsColumnSets.ColumnNameIndex)j));
                    }
                };
                handler = AxKH_20068_OnReceived;

                if (nCnt == 0)
                {
                    if (handler != null)
                    {
                        //_OptStatus.InitOptCallingStatus();
                        AxKH_20068_OnReceived(e.sRQName.ToString().Trim(), null, 0);
                        return;
                    }
                }

                for (int i = 0; i < nCnt; i++)
                {
                    DataRow dr = dt.NewRow();
                    for (int intColumName = 0; intColumName < dt.Columns.Count; intColumName++)
                    {
                        var type = dt.Columns[intColumName].DataType;
                        dr[dt.Columns[intColumName].ColumnName.ToString()] = Convert.ChangeType(ClsAxKH.AxKH.GetCommData(e.sTrCode, e.sRQName, i, dt.Columns[intColumName].ColumnName.ToString()).ToString().Trim(), type);
                    }

                    dt.Rows.Add(dr);
                }

                if (handler != null)
                {
                    if (Convert.ToInt32(e.sPrevNext) != 2)
                    {
                        //_OptStatus.InitOptCallingStatus();
                    }

                    AxKH_20068_OnReceived(e.sRQName.ToString().Trim(), dt, Convert.ToInt32(e.sPrevNext));
                    return;
                }

                break;

            case "테마그룹별요청":
                using (ClsColumnSets oBasicDataType = new ClsColumnSets())
                {
                    foreach (int i in Enum.GetValues(typeof(ClsColumnSets.Column90002Index)))
                    {
                        int j = 0;
                        j = (int)Enum.Parse(typeof(ClsColumnSets.ColumnNameIndex), Enum.GetName(typeof(ClsColumnSets.Column90002Index), i));
                        // _dt.Columns.Add(oBasicDataType.GetDataColumn((ClsColumnSets.ColumnNameIndex)i));
                        dt.Columns.Add(oBasicDataType.GetDataColumn((ClsColumnSets.ColumnNameIndex)j));
                    }
                };
                handler = AxKH_90002_OnReceived;

                if (nCnt == 0)
                {
                    if (handler != null)
                    {
                        //_OptStatus.InitOptCallingStatus();
                        AxKH_90002_OnReceived(e.sRQName.ToString().Trim(), null, 0);
                        return;
                    }
                }

                for (int i = 0; i < nCnt; i++)
                {
                    DataRow dr = dt.NewRow();
                    for (int intColumName = 0; intColumName < dt.Columns.Count; intColumName++)
                    {
                        var type = dt.Columns[intColumName].DataType;
                        dr[dt.Columns[intColumName].ColumnName.ToString()] = Convert.ChangeType(ClsAxKH.AxKH.GetCommData(e.sTrCode, e.sRQName, i, dt.Columns[intColumName].ColumnName.ToString()).ToString().Trim(), type);
                    }

                    dt.Rows.Add(dr);
                }

                if (handler != null)
                {
                    if (Convert.ToInt32(e.sPrevNext) != 2)
                    {
                        //_OptStatus.InitOptCallingStatus();
                    }

                    AxKH_90002_OnReceived(e.sRQName.ToString().Trim(), dt, Convert.ToInt32(e.sPrevNext));
                    return;
                }

                break;

            default:
                return;
            }
        }
        private void Opt10081_OnReceived(string sRQName, DataTable dt, int sPreNext)
        {
            TaskCompletionSource <bool> tcs = null;

            tcs = new TaskCompletionSource <bool>();

            string[] sRQNameArray = sRQName.Split(',');

            string stockCode    = "";
            string stdDate      = "";
            string maxDate      = "";
            string minDate      = "";
            string chainMaxDate = "";

            stockCode = ClsAxKH.RetStockCodeBysRqName(ClsAxKH.OptType.Opt10081, sRQName);
            stdDate   = ClsAxKH.RetStdDateBysRqName(ClsAxKH.OptType.Opt10081, sRQName);

            try
            {
                if (dt != null)
                {
                    maxDate = dt.Compute("max([일자])", string.Empty).ToString().Trim();
                    minDate = dt.Compute("min([일자])", string.Empty).ToString().Trim();

                    ClsDbLogger.OptCallMagamStoredData(actionGb: "A", optCaller: "OPT10081", stockCode: stockCode, stdDate: stdDate, maxDate: maxDate, minDate: minDate, jobIngGb: "", chainCompGb: "", chainMaxDate: "", chainMinDate: "");

                    var rows = _dtOptCalMagam.AsEnumerable().Where(Row => Row.Field <string>("STOCK_CODE") == stockCode);

                    foreach (DataRow dr2th in rows)
                    {
                        if (dr2th["CHAIN_COMP_GB"].ToString().Trim() == "Y")
                        {
                            chainMaxDate = dr2th["CHAIN_MAX_DATE"].ToString().Trim();
                        }
                    }
                }


                if (tcs == null || tcs.Task.IsCompleted)
                {
                    return;
                }

                if (dt != null)
                {
                    ArrayParam arrParam = new ArrayParam();
                    Sql        oSql     = new Sql(SDataAccess.ClsServerInfo.VADISSEVER, "KIWOOMDB");


                    foreach (DataRow dr in dt.Rows)
                    {
                        WriteTextSafe(stockCode + "(" + dr["일자"] + ")");

                        arrParam.Clear();
                        arrParam.Add("@ACTION_GB", "A");
                        arrParam.Add("@STOCK_CODE", stockCode);
                        arrParam.Add("@STOCK_DATE", dr["일자"]);
                        arrParam.Add("@DATE_SEQNO", 0);
                        arrParam.Add("@NOW_PRICE", dr["현재가"]);
                        arrParam.Add("@TRADE_QTY", dr["거래량"]);
                        arrParam.Add("@TRADE_DAEGUM", dr["거래대금"]);
                        arrParam.Add("@START_PRICE", dr["시가"]);
                        arrParam.Add("@HIGH_PRICE", dr["고가"]);
                        arrParam.Add("@LOW_PRICE", dr["저가"]);
                        arrParam.Add("@CHG_JUGA_GB", dr["수정주가구분"]);
                        arrParam.Add("@CHG_RATE", dr["수정비율"]);
                        arrParam.Add("@CHG_JUGA_EVENT", dr["수정주가이벤트"]);
                        arrParam.Add("@R_ERRORCD", -1, SqlDbType.Int, ParameterDirection.InputOutput);

                        oSql.ExecuteNonQuery("p_Opt10081Add", CommandType.StoredProcedure, arrParam);

                        if (chainMaxDate != "")
                        {
                            if (chainMaxDate == dr["일자"].ToString().Trim())
                            {
                                ClsDbLogger.OptCallMagamStoredData(actionGb: "A", optCaller: "OPT10081", stockCode: stockCode, stdDate: stdDate, maxDate: maxDate, minDate: minDate, jobIngGb: "C", chainCompGb: "", chainMaxDate: "", chainMinDate: "");
                                _opt10081.Dispose();

                                WaitTime();

                                tcs.SetResult(true);

                                OnGetStockCode();

                                return;
                            }
                        }
                    }
                }
                else
                {
                    ClsDbLogger.OptCallMagamStoredData(actionGb: "EE", optCaller: "OPT10081", stockCode: stockCode, stdDate: stdDate, maxDate: maxDate, minDate: minDate, jobIngGb: "F", chainCompGb: "", chainMaxDate: "", chainMinDate: minDate);

                    _opt10081.Dispose();

                    WaitTime();

                    tcs.SetResult(true);

                    OnGetStockCode();

                    return;
                }

                // 최근 거래일 100일을 가져오는걸로 한다면
                if (chk100.Checked == true)
                {
                    ClsDbLogger.OptCallMagamStoredData(actionGb: "A", optCaller: "OPT10081", stockCode: stockCode, stdDate: stdDate, maxDate: maxDate, minDate: minDate, jobIngGb: "C", chainCompGb: "", chainMaxDate: "", chainMinDate: "");

                    _opt10081.Dispose();

                    WaitTime();

                    tcs.SetResult(true);

                    OnGetStockCode();

                    return;
                }
                else
                {
                    if (sPreNext == 2)
                    {
                        tcs.SetResult(true);

                        ClsDbLogger.OptCallMagamStoredData(actionGb: "A", optCaller: "OPT10081", stockCode: stockCode, stdDate: stdDate, maxDate: maxDate, minDate: minDate, jobIngGb: "S", chainCompGb: "", chainMaxDate: "", chainMinDate: "");

                        //_clsDataAccessUtil.Delay(3600);

                        WaitTime();

                        _opt10081.SetInit(_FormId);
                        _opt10081.JustRequest(StockCode: sRQNameArray[1].ToString().Trim(), StockName: "", StdDate: sRQNameArray[2].ToString().Trim(), ModifyJugaGb: sRQNameArray[3].ToString().Trim(), nPrevNext: 2);
                    }
                    else
                    {
                        if (dt != null)
                        {
                            ClsDbLogger.OptCallMagamStoredData(actionGb: "CE", optCaller: "OPT10081", stockCode: stockCode, stdDate: stdDate, maxDate: maxDate, minDate: minDate, jobIngGb: "C", chainCompGb: "", chainMaxDate: "", chainMinDate: minDate);
                        }
                        else
                        {
                            ClsDbLogger.OptCallMagamStoredData(actionGb: "EE", optCaller: "OPT10081", stockCode: stockCode, stdDate: stdDate, maxDate: maxDate, minDate: minDate, jobIngGb: "F", chainCompGb: "", chainMaxDate: "", chainMinDate: minDate);
                        }

                        _opt10081.Dispose();

                        WaitTime();

                        tcs.SetResult(true);

                        OnGetStockCode();
                        return;
                    }
                }
            }

            catch (Exception ex)
            {
                _opt10081.Dispose();

                tcs.SetResult(true);

                OnGetStockCode();
                WaitTime();
                MessageBox.Show(ex.Message.ToString());
                throw;
            }
        }