#include "xexceltomysq.h" #include #include #include XStocksDataParser::XStocksDataParser(QObject *parent) : QObject(parent) { } QList<_WholeStocksParam> XStocksDataParser::parseWholeStocks(QList > datas) { QList<_WholeStocksParam> wholeStocksParamList; if(datas.count() <= 1) return wholeStocksParamList; QList headDatas = datas.at(0); m_wholeStocksKeyIndexs.clear(); QString tradeDay = parseWholeStockHead(headDatas); if(!tradeDay.isEmpty()) { qDebug() << " datas count :" << datas.count(); for (int row = 1; row < datas.count();row++) { QList rowData = datas.at(row); _WholeStocksParam param; for(int column = 0; column < rowData.count() ; column++) { if(rowData.at(column).toString().isEmpty()) { qDebug() << "break"; break; } param.tradeDay = tradeDay; addValueToWholeStockParam(param,column,rowData.at(column).toString()); } if(param.code.isEmpty() || param.name.isEmpty()) continue; wholeStocksParamList.append(param); } } return wholeStocksParamList; } QList XStocksDataParser::parseWholeStockIndexs(QList > datas) { QList wholeStockIndexsParamList; if(datas.count() <= 1) return wholeStockIndexsParamList; QList headDatas = datas.at(0); m_wholeStocksKeyIndexs.clear(); QString tradeDay = parseWholeStockIndexHead(headDatas); if(!tradeDay.isEmpty()) { qDebug() << " datas count :" << datas.count(); for (int row = 1; row < datas.count();row++) { QList rowData = datas.at(row); XWholeStockIndexs::_WholeStockIndexsParam param; for(int column = 0; column < rowData.count() ; column++) { if(rowData.at(column).toString().isEmpty()) { qDebug() << "break"; break; } param.tradeDay = tradeDay; addValueToWholeStockIndexParam(param,column,rowData.at(column).toString()); } if(param.code.isEmpty() || param.name.isEmpty()) continue; wholeStockIndexsParamList.append(param); } } return wholeStockIndexsParamList; } QList<_HighStocksParam> XStocksDataParser::parseHightStocks(QList > datas) { QList<_HighStocksParam> highStocksParamList; if(datas.count() <= 1) return highStocksParamList; QList headDatas = datas.at(0); m_wholeStocksKeyIndexs.clear(); QString tradeDay = parseHighStockHead(headDatas); if(!tradeDay.isEmpty()) { qDebug() << " datas count :" << datas.count(); for (int row = 1; row < datas.count();row++) { QList rowData = datas.at(row); _HighStocksParam param; for(int column = 0; column < rowData.count() ; column++) { if(rowData.at(column).toString().isEmpty()) { qDebug() << "break"; break; } param.tradeDay = tradeDay; addValueToHighStockParam(param,column,rowData.at(column).toString()); } if(param.code.isEmpty() || param.name.isEmpty()) continue; highStocksParamList.append(param); } } return highStocksParamList; } QList<_HighStockIndexsParam> XStocksDataParser::parseHightStockIndexs(QList > datas) { QList<_HighStockIndexsParam> highStockIndexParamList; if(datas.count() <= 1) return highStockIndexParamList; QList headDatas = datas.at(0); m_wholeStocksKeyIndexs.clear(); QString tradeDay = parseHighStockIndexHead(headDatas); if(!tradeDay.isEmpty()) { qDebug() << " datas count :" << datas.count(); for (int row = 1; row < datas.count();row++) { QList rowData = datas.at(row); _HighStockIndexsParam param; for(int column = 0; column < rowData.count() ; column++) { if(rowData.at(column).toString().isEmpty()) { qDebug() << "break"; break; } param.tradeDay = tradeDay; addValueToHighStockIndexParam(param,column,rowData.at(column).toString()); } if(param.code.isEmpty() || param.name.isEmpty()) continue; highStockIndexParamList.append(param); } } return highStockIndexParamList; } QString XStocksDataParser::parseWholeStockHead(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("开盘价"))) { // //开盘价[交易日期]最新(2021-05-20)[复权方式]前复权 int dayStart = headValue.indexOf("("); int dayEnd = headValue.indexOf(")"); tradeDay = headValue.mid(dayStart+1,dayEnd - dayStart-1); m_wholeStocksKeyIndexs.insert(i,"open"); } else if(headValue.contains(QStringLiteral("收盘价"))) { m_wholeStocksKeyIndexs.insert(i,"close"); } else if(headValue.contains(QStringLiteral("涨跌幅")) && !headValue.contains(QStringLiteral("前20个交易日")) && !headValue.contains(QStringLiteral("前60个交易日"))) { m_wholeStocksKeyIndexs.insert(i,"differRange"); } else if(headValue.contains(QStringLiteral("所属东财行业指数")) && !headValue.contains(QStringLiteral("所属东财行业指数代码"))) { m_wholeStocksKeyIndexs.insert(i,"BLEMIND2"); } else if(headValue.contains(QStringLiteral("区间涨跌幅")) && headValue.contains(QStringLiteral("前20个交易日"))) { m_wholeStocksKeyIndexs.insert(i,"differRangeP20"); } else if(headValue.contains(QStringLiteral("区间涨跌幅")) && headValue.contains(QStringLiteral("前60个交易日"))) { m_wholeStocksKeyIndexs.insert(i,"differRangeP60"); } else if(headValue.contains(QStringLiteral("是否为ST股票"))) { m_wholeStocksKeyIndexs.insert(i,"isSTStock"); } else if(headValue.contains(QStringLiteral("是否为*ST股票"))) { m_wholeStocksKeyIndexs.insert(i,"isSTXStock"); } else if(headValue.contains(QStringLiteral("首发上市日期"))) { m_wholeStocksKeyIndexs.insert(i,"listDate"); } else if(headValue.contains(QStringLiteral("区间可交易日数"))) { m_wholeStocksKeyIndexs.insert(i,"tradeDaysP"); } 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,"BLEMINDCODE2"); } else if(headValue.contains(QStringLiteral("自由流通市值"))) { m_wholeStocksKeyIndexs.insert(i,"freeFloatMv"); } else if(headValue.contains(QStringLiteral("总市值"))) { m_wholeStocksKeyIndexs.insert(i,"mvByCSRC"); } else if(headValue.contains(QStringLiteral("区间日均成交量"))) { m_wholeStocksKeyIndexs.insert(i,"avgVolumeP20"); } qDebug() << "parseWholeStockHead : " < 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,"componentNum"); } else if(headValue.contains(QStringLiteral("开盘价"))) { // //开盘价[交易日期]最新(2021-05-20)[复权方式]前复权 int dayStart = headValue.indexOf("("); int dayEnd = headValue.indexOf(")"); tradeDay = headValue.mid(dayStart+1,dayEnd - dayStart-1); m_wholeStocksKeyIndexs.insert(i,"open"); } else if(headValue.contains(QStringLiteral("收盘价"))) { m_wholeStocksKeyIndexs.insert(i,"close"); } else if(headValue.contains(QStringLiteral("涨跌幅"))) { m_wholeStocksKeyIndexs.insert(i,"differRange"); } else if(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,"freeFloatMv"); } else if(headValue.contains(QStringLiteral("总市值"))) { m_wholeStocksKeyIndexs.insert(i,"mvByCSRC"); } qDebug() << "parseWholeStockIndexHead : " < 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("开盘价"))) { // //开盘价[交易日期]最新(2021-05-20)[复权方式]前复权 int dayStart = headValue.indexOf("("); int dayEnd = headValue.indexOf(")"); tradeDay = headValue.mid(dayStart+1,dayEnd - dayStart-1); m_wholeStocksKeyIndexs.insert(i,"open"); } else if(headValue.contains(QStringLiteral("收盘价"))) { m_wholeStocksKeyIndexs.insert(i,"close"); } else if(headValue.contains(QStringLiteral("最高价")) && !headValue.contains(QStringLiteral("区间最高价日"))) { m_wholeStocksKeyIndexs.insert(i,"high"); } else if(headValue.contains(QStringLiteral("涨跌幅")) && !headValue.contains(QStringLiteral("前20个交易日")) && !headValue.contains(QStringLiteral("前60个交易日"))) { m_wholeStocksKeyIndexs.insert(i,"differRange"); } else if(headValue.contains(QStringLiteral("成交量")) && !headValue.contains(QStringLiteral("区间日均成交量"))) { m_wholeStocksKeyIndexs.insert(i,"volumn"); } else if(headValue.contains(QStringLiteral("近期创阶段新高"))) { m_wholeStocksKeyIndexs.insert(i,"isHighRangeP"); } else if(headValue.contains(QStringLiteral("所属东财行业指数")) && !headValue.contains(QStringLiteral("所属东财行业指数代码"))) { m_wholeStocksKeyIndexs.insert(i,"BLEMIND2"); } else if(headValue.contains(QStringLiteral("区间最高价日"))) { m_wholeStocksKeyIndexs.insert(i,"HpDateP"); } qDebug() << "parseWholeStockHead : " < 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("开盘价"))) { // //开盘价[交易日期]最新(2021-05-20)[复权方式]前复权 int dayStart = headValue.indexOf("("); int dayEnd = headValue.indexOf(")"); tradeDay = headValue.mid(dayStart+1,dayEnd - dayStart-1); m_wholeStocksKeyIndexs.insert(i,"open"); } else if(headValue.contains(QStringLiteral("收盘价"))) { m_wholeStocksKeyIndexs.insert(i,"close"); } else if(headValue.contains(QStringLiteral("涨跌幅")) && !headValue.contains(QStringLiteral("前20个交易日")) && !headValue.contains(QStringLiteral("前60个交易日"))) { m_wholeStocksKeyIndexs.insert(i,"differRange"); } else if(headValue.contains(QStringLiteral("近期创阶段新高"))) { m_wholeStocksKeyIndexs.insert(i,"isHighRangeP"); } else if(headValue.contains(QStringLiteral("区间最高价日"))) { m_wholeStocksKeyIndexs.insert(i,"HpDateP"); } else if(headValue.contains(QStringLiteral("涨停家数"))) { m_wholeStocksKeyIndexs.insert(i,"LIMITUPNUM"); } else if(headValue.contains(QStringLiteral("总市值"))) { m_wholeStocksKeyIndexs.insert(i,"mvByCSRC"); } else if(headValue.contains(QStringLiteral("成份个数"))) { m_wholeStocksKeyIndexs.insert(i,"componentNum"); } qDebug() << "parseWholeStockHead : " <