#include "stocksdecoder.h" #include StocksDecoder::StocksDecoder() { } void StocksDecoder::decode(QList > edatas,QString date) { if(edatas.count() <= 1) return; QList headDatas = edatas.at(0); data.clear(); QString tradeDay = parseStockHead(headDatas); if(tradeDay.isEmpty()) tradeDay = date; if(!tradeDay.isEmpty()) { qDebug() << " datas count :" << edatas.count(); for (int row = 1; row < edatas.count();row++) { QList rowData = edatas.at(row); _stocksInfo param; for(int column = 0; column < rowData.count() ; column++) { if(rowData.at(column).toString().isEmpty()) { qDebug() << "break"; break; } param.tradeDay = tradeDay; toValueStockInfo(param,column,rowData.at(column).toString()); } if(param.code.isEmpty() || param.name.isEmpty()) continue; data.append(param); } } } QString StocksDecoder::parseStockHead(QList headDatas) { QString tradeDay = "";//暂时不查询交易日期 for(int i = 0; i < headDatas.count(); i++) { QVariant value = headDatas[i]; QString headValue = value.toString(); if(headValue.contains(QStringLiteral("证券代码"))) { m_wholeStocksKeyIndexs.insert(i,"code"); } else if(headValue.contains(QStringLiteral("证券名称"))) { m_wholeStocksKeyIndexs.insert(i,"name"); } else if(headValue.contains(QStringLiteral("开盘价"))) { m_wholeStocksKeyIndexs.insert(i,"open"); // if(headValue.contains(QStringLiteral("最新"))) // { // } // else // { // //开盘价[交易日期]最新(2021-05-20)[复权方式]前复权 // int dayStart = headValue.indexOf("("); // int dayEnd = headValue.indexOf(")"); // tradeDay = headValue.mid(dayStart+1,dayEnd - dayStart-1); // } } else if(headValue.contains(QStringLiteral("收盘价"))) { m_wholeStocksKeyIndexs.insert(i,"close"); } else if(headValue.contains(QStringLiteral("涨跌幅")) && !headValue.contains(QStringLiteral("前10个交易日")) && !headValue.contains(QStringLiteral("前20个交易日")) && !headValue.contains(QStringLiteral("前60个交易日"))) { m_wholeStocksKeyIndexs.insert(i,"differRange"); } else if(headValue.contains(QStringLiteral("所属东财行业指数")) && headValue.contains(QStringLiteral("2级")) && !headValue.contains(QStringLiteral("所属东财行业指数代码"))) { m_wholeStocksKeyIndexs.insert(i,"blemind2"); } else if(headValue.contains(QStringLiteral("所属东财行业")) && headValue.contains(QStringLiteral("3级"))) { m_wholeStocksKeyIndexs.insert(i,"blemind3"); } else if(headValue.contains(QStringLiteral("区间涨跌幅")) && headValue.contains(QStringLiteral("前10"))) { m_wholeStocksKeyIndexs.insert(i,"differRange10"); } else if(headValue.contains(QStringLiteral("区间涨跌幅")) && headValue.contains(QStringLiteral("前20"))) { m_wholeStocksKeyIndexs.insert(i,"differRange20"); } else if(headValue.contains(QStringLiteral("区间涨跌幅")) && headValue.contains(QStringLiteral("前60"))) { m_wholeStocksKeyIndexs.insert(i,"differRange60"); } else if(headValue.contains(QStringLiteral("首发上市日期"))) { m_wholeStocksKeyIndexs.insert(i,"listDate"); } else if(headValue.contains(QStringLiteral("区间可交易日数"))) { m_wholeStocksKeyIndexs.insert(i,"tradeDays"); } else if(headValue.contains(QStringLiteral("成交量")) && !headValue.contains(QStringLiteral("区间日均成交量"))) { m_wholeStocksKeyIndexs.insert(i,"volumn"); } else if(headValue.contains(QStringLiteral("成交额"))) { m_wholeStocksKeyIndexs.insert(i,"amount"); } else if(headValue.contains(QStringLiteral("自由流通市值"))) { m_wholeStocksKeyIndexs.insert(i,"freeFloatMarketValue"); } else if(headValue.contains(QStringLiteral("总市值"))) { m_wholeStocksKeyIndexs.insert(i,"totalMarketValue"); } else if(headValue.contains(QStringLiteral("区间日均成交量"))) { m_wholeStocksKeyIndexs.insert(i,"avgVolume20"); } else if(headValue.contains(QStringLiteral("机构持股比例合计"))) { m_wholeStocksKeyIndexs.insert(i,"agenciesHold"); } qDebug() << "parseWholeStockHead : " <