public IndicatorEntityListDataPacket(List <String> categoryCodeList) { base.RequestId = RequestType.IndicatorEntityList; this.CategoryCodeList = categoryCodeList; this.IndicatorEntityDict = new Dictionary <String, IndicatorEntity>(); this._requestCategoryCodeList = new List <String>(); foreach (String str in categoryCodeList) { IndicatorEntity indicatorEntityByCategoryCode = IndicatorDataCore.GetIndicatorEntityByCategoryCode(str); if (indicatorEntityByCategoryCode != null) { this.IndicatorEntityDict[str] = indicatorEntityByCategoryCode; } else { this._requestCategoryCodeList.Add(str); } } }
/// <summary> /// 获取指标数据 /// </summary> /// <param name="indicatorCode"></param> /// <param name="blockType"></param> /// <param name="codes"></param> /// <returns></returns> public static IndicatorRootData GetIndicatorData(String indicatorCode, String blockType, String codes) { if (!IndicatorDataCore._IndicatorEntityDict.ContainsKey(indicatorCode)) { IndicatorEntityDataPacket newEntity = new IndicatorEntityDataPacket(indicatorCode); ConnectManager.CreateInstance().Request(newEntity); int tick2 = 0; while (newEntity.ReserveFlag == 0 && tick2 < 100) { tick2++; Thread.Sleep(100); } } IndicatorRootData rootData = new IndicatorRootData(); List <IndicatorItemData> datas = new List <IndicatorItemData>(); rootData.items = datas; String[] strs = codes.Split(new String[] { "," }, StringSplitOptions.RemoveEmptyEntries); int strsSize = strs.Length; IndicatorEntity entity = IndicatorDataCore.GetIndicatorEntityByCategoryCode(indicatorCode); if (entity != null) { if (entity.Parameters != null) { entity.Parameters = entity.Parameters.Replace("EmDataPara.", "dataquery."); entity.Parameters = entity.Parameters.Replace("\"DefaultValue\":\"2013\"", "\"DefaultValue\":\"2016\""); entity.Parameters = entity.Parameters.Replace("\"DefaultValue\":\"2014-04-21\"", "\"DefaultValue\":\"2017-03-27\""); } List <int> ids = new List <int>(); ids.Add((int)entity.ID); Dictionary <String, String> codesMap = new Dictionary <String, String>(); List <StockEntity> stocks = new List <StockEntity>(); String idStr = entity.ID.ToString(); for (int i = 0; i < strsSize; i++) { StockEntity stock = new StockEntity(); String[] subStrs = strs[i].Split(new String[] { "," }, StringSplitOptions.RemoveEmptyEntries); stock.StockCode = subStrs[0]; stocks.Add(stock); codesMap[subStrs[0] + idStr] = subStrs[0]; } IndicatorDataCore.SetCustomerIndicatorEntity((int)entity.ID, entity); IndicatorDataPacket2 indicatorDataPacket = new IndicatorDataPacket2(CommonEnumerators.IndicatorRequestType.Fun, stocks, ids); if (blockType == "Block") { indicatorDataPacket = new IndicatorDataPacket2(CommonEnumerators.IndicatorRequestType.Blk, stocks, ids); } ConnectManager.CreateInstance().Request(indicatorDataPacket); int tick = 0; while (indicatorDataPacket.ReserveFlag == 0 && tick < 100) { tick++; Thread.Sleep(100); } Dictionary <String, double> _doubleIndicatorDict = IndicatorTableDataCore.DoubleIndicatorDict; Dictionary <String, float> _floatIndicatorDict = IndicatorTableDataCore.FloatIndicatorDict; Dictionary <String, int> _intIndicatorDict = IndicatorTableDataCore.Int32IndicatorDict; Dictionary <String, long> _longIndicatorDict = IndicatorTableDataCore.LongIndicatorDict; Dictionary <String, String> _strIndicatorDict = IndicatorTableDataCore.StrIndicatorDict; StringBuilder sb = new StringBuilder(); rootData.categoryName = entity.CategoryName; rootData.categoryCode = entity.CategoryCode; if (entity.Parameters != null) { rootData.parameters = entity.Parameters; sb.Append("参数:" + entity.Parameters + "\r\n"); } foreach (String key in _strIndicatorDict.Keys) { if (codesMap.ContainsKey(key)) { datas.Add(new IndicatorItemData(codesMap[key], _strIndicatorDict[key])); } } foreach (String key in _doubleIndicatorDict.Keys) { if (codesMap.ContainsKey(key)) { datas.Add(new IndicatorItemData(codesMap[key], _doubleIndicatorDict[key])); } } foreach (String key in _floatIndicatorDict.Keys) { if (codesMap.ContainsKey(key)) { datas.Add(new IndicatorItemData(codesMap[key], _floatIndicatorDict[key])); } } foreach (String key in _intIndicatorDict.Keys) { if (codesMap.ContainsKey(key)) { datas.Add(new IndicatorItemData(codesMap[key], _intIndicatorDict[key])); } } foreach (String key in _longIndicatorDict.Keys) { if (codesMap.ContainsKey(key)) { datas.Add(new IndicatorItemData(codesMap[key], _longIndicatorDict[key])); } } codesMap.Clear(); } return(rootData); }