logplus/logPlus/fileopenthread.cpp

415 lines
12 KiB
C++
Raw Normal View History

#include "fileopenthread.h"
#include <QFile>
#include <QDir>
//#include "CallManage.h"
#include <QFuture>
#include <QtConcurrent/QtConcurrent>
extern QString g_prjname;
void FileOpenThread::Open(QString fileFull)
{
QString strPrjname = "";
QJsonArray wellsArray;
QJsonParseError jsonError;
// 文件
QFile file(fileFull);
if(file.open(QIODevice::ReadOnly))
{
// 解析JSON
QJsonDocument document = QJsonDocument::fromJson(file.readAll(), &jsonError);
if (!document.isNull() && (jsonError.error == QJsonParseError::NoError))
{
if (document.isObject())
{
QJsonObject object = document.object();
//
if (object.contains("prjname"))
{
QJsonValue value = object.value("prjname");
if (value.isString()) {
strPrjname = value.toString();
qDebug() << "prjname:" << strPrjname;
if(strPrjname != g_prjname)
{
file.close();
qDebug() << "JSON 模板文件项目名称与当前项目不一致!";
return;
}
}
}
//
if (object.contains("wells"))
{
QJsonValue value = object.value("wells");
if (value.isArray()) {
wellsArray = value.toArray();
qDebug() << "wellsArray number:" << QString::number(wellsArray.size());
//展示所有井
DisplayWells(wellsArray);
}
}
}
}
//
file.close();
qDebug() << "JSON 模板文件读取成功!";
} else {
qWarning() << "JSON 模板文件打开失败:" << file.errorString();
}
}
void FileOpenThread::DisplayWells(QJsonArray wellsArray)
{
QMap<int, int> mapWells;
int id = 0;
int iCount = wellsArray.size();
for(int i=0; i<iCount; i++)
{
QJsonValue wellValue = wellsArray[i];
QJsonObject wellObj = wellValue.toObject();
//
if (wellObj.contains("id"))
{
QJsonValue value = wellObj.value("id");
if (value.isDouble()) {
id = value.toInt();
qDebug() << "id:" << QString::number(id);
//
mapWells.insert(id, i);
}
}
}
for(int id=0; id<iCount; id++)
{
if(mapWells.contains(id*2))
{
int iNum = mapWells.value(id*2);
//按照id顺序展示井
QJsonValue wellValue = wellsArray[iNum];
QJsonObject wellObj = wellValue.toObject();
//
if (wellObj.contains("info"))
{
QJsonValue value = wellObj.value("info");
if (value.isObject()) {
QJsonObject wellObjInfo = value.toObject();
//展示其中一口井
DisplayWell_One(wellObjInfo);
}
}
}
}
}
//展示其中一口井
void FileOpenThread::DisplayWell_One(QJsonObject wellObjInfo)
{
QString strWellName = "";
QJsonArray tracksArray;
if (wellObjInfo.contains("WellName"))
{
QJsonValue value = wellObjInfo.value("WellName");
if (value.isString()) {
strWellName = value.toString();
qDebug() << "WellName:" << strWellName;
//新建井
//mainWindowCurve->s_NewWell(strWellName);
emit sig_NewWell(strWellName);
}
}
//
if (wellObjInfo.contains("formTracks"))
{
QJsonValue value = wellObjInfo.value("formTracks");
if (value.isArray()) {
tracksArray = value.toArray();
qDebug() << "tracksArray number:" << QString::number(tracksArray.size());
//展示所有道
DisplayTracks(tracksArray);
}
}
}
//展示所有道
void FileOpenThread::DisplayTracks(QJsonArray tracksArray)
{
QMap<int, int> mapTracks;
int id = 0;
int iCount = tracksArray.size();
for(int i=0; i<iCount; i++)
{
QJsonValue trackValue = tracksArray[i];
QJsonObject trackObj = trackValue.toObject();
//
if (trackObj.contains("id"))
{
QJsonValue value = trackObj.value("id");
if (value.isDouble()) {
id = value.toInt();
qDebug() << "id:" << QString::number(id);
//
mapTracks.insert(id, i);
}
}
}
for(int id=0; id<iCount; id++)
{
if(mapTracks.contains(id))
{
int iNum = mapTracks.value(id);
//按照id顺序展示道
QJsonValue trackValue = tracksArray[iNum];
QJsonObject trackObj = trackValue.toObject();
//
if (trackObj.contains("info"))
{
QJsonValue value = trackObj.value("info");
if (value.isObject()) {
QJsonObject trackObjInfo = value.toObject();
//展示其中一道
DisplayTrack_One(trackObjInfo, id);
}
}
}
}
}
//展示其中一道
void FileOpenThread::DisplayTrack_One(QJsonObject trackObjInfo, int id)
{
QString strWellName = "";
QString strTrackName = "";
QJsonArray linesArray;
if (trackObjInfo.contains("WellName"))
{
QJsonValue value = trackObjInfo.value("WellName");
if (value.isString()) {
strWellName = value.toString();
qDebug() << "WellName:" << strWellName;
}
}
if (trackObjInfo.contains("TrackName"))
{
QJsonValue value = trackObjInfo.value("TrackName");
if (value.isString()) {
strTrackName = value.toString();
qDebug() << "TrackName:" << strTrackName;
}
}
//新建道+曲线
//emit mainWindow->getInstanceCallManage()->sig_NewTrack_No_Line(strWellName, strTrackName);//新建空白道,没有曲线
emit sig_NewTrack_No_Line(strWellName, strTrackName);//新建空白道,没有曲线
if(id>0)
{
//改变井宽
emit sig_NewTrackChangeWidth(strWellName);
//mainWindowCurve->s_NewTrackChangeWidth(strWellName);
}
//
if (trackObjInfo.contains("formInfos"))
{
QJsonValue value = trackObjInfo.value("formInfos");
if (value.isArray()) {
linesArray = value.toArray();
qDebug() << "linesArray number:" << QString::number(linesArray.size());
//展示所有曲线
DisplayLines(linesArray);
}
}
}
//展示所有曲线
void FileOpenThread::DisplayLines(QJsonArray linesArray)
{
QMap<int, int> mapLines;
int id = 0;
int iCount = linesArray.size();
for(int i=0; i<iCount; i++)
{
QJsonValue lineValue = linesArray[i];
QJsonObject lineObj = lineValue.toObject();
//
if (lineObj.contains("id"))
{
QJsonValue value = lineObj.value("id");
if (value.isDouble()) {
id = value.toInt();
qDebug() << "id:" << QString::number(id);
//
mapLines.insert(id, i);
}
}
}
for(int id=0; id<iCount; id++)
{
if(mapLines.contains(id))
{
int iNum = mapLines.value(id);
//按照id顺序展示曲线
QJsonValue lineValue = linesArray[iNum];
QJsonObject lineObj = lineValue.toObject();
//
if (lineObj.contains("info"))
{
QJsonValue value = lineObj.value("info");
if (value.isObject()) {
QJsonObject lineObjInfo = value.toObject();
//展示其中一条曲线
DisplayLine_One(lineObjInfo);
}
}
}
}
}
//展示其中一条曲线
void FileOpenThread::DisplayLine_One(QJsonObject lineObjInfo)
{
QString strSlfName = "";
QString strWellName = "";
QString strTrackName = "";
QString strLineName = "";
double newLeftScale = 0;
double newRightScale = 500;
QColor lineColor = QColor(0,0,0);
double width = 3;
Qt::PenStyle lineStyle = Qt::SolidLine;
if (lineObjInfo.contains("SlfName"))
{
QJsonValue value = lineObjInfo.value("SlfName");
if (value.isString()) {
strSlfName = value.toString();
qDebug() << "SlfName:" << strSlfName;
}
}
if (lineObjInfo.contains("WellName"))
{
QJsonValue value = lineObjInfo.value("WellName");
if (value.isString()) {
strWellName = value.toString();
qDebug() << "WellName:" << strWellName;
}
}
if (lineObjInfo.contains("TrackName"))
{
QJsonValue value = lineObjInfo.value("TrackName");
if (value.isString()) {
strTrackName = value.toString();
qDebug() << "TrackName:" << strTrackName;
}
}
if (lineObjInfo.contains("LineName"))
{
QJsonValue value = lineObjInfo.value("LineName");
if (value.isString()) {
strLineName = value.toString();
qDebug() << "LineName:" << strLineName;
}
}
if (lineObjInfo.contains("vmin"))
{
QJsonValue value = lineObjInfo.value("vmin");
if (value.isDouble()) {
newLeftScale = value.toDouble();
qDebug() << "vmin:" << QString::number(newLeftScale);
}
}
if (lineObjInfo.contains("vmax"))
{
QJsonValue value = lineObjInfo.value("vmax");
if (value.isDouble()) {
newRightScale = value.toDouble();
qDebug() << "vmax:" << QString::number(newRightScale);
}
}
if (lineObjInfo.contains("Width"))
{
QJsonValue value = lineObjInfo.value("Width");
if (value.isDouble()) {
width = value.toDouble();
qDebug() << "Width:" << QString::number(width);
}
}
if (lineObjInfo.contains("lineStyle"))
{
QJsonValue value = lineObjInfo.value("lineStyle");
if (value.isDouble()) {
lineStyle = (Qt::PenStyle)value.toInt();
qDebug() << "lineStyle:" << QString::number(lineStyle);
}
}
//
if (lineObjInfo.contains("lineColorRed"))
{
QJsonValue value = lineObjInfo.value("lineColorRed");
if (value.isDouble()) {
lineColor.setRed(value.toInt());
qDebug() << "lineColorRed:" << QString::number(value.toInt());
}
}
//
if (lineObjInfo.contains("lineColorGreen"))
{
QJsonValue value = lineObjInfo.value("lineColorGreen");
if (value.isDouble()) {
lineColor.setGreen(value.toInt());
qDebug() << "lineColorGreen:" << QString::number(value.toInt());
}
}
//
if (lineObjInfo.contains("lineColorBlue"))
{
QJsonValue value = lineObjInfo.value("lineColorBlue");
if (value.isDouble()) {
lineColor.setBlue(value.toInt());
qDebug() << "lineColorBlue:" << QString::number(value.toInt());
}
}
//
if (lineObjInfo.contains("lineColorAlpha"))
{
QJsonValue value = lineObjInfo.value("lineColorAlpha");
if (value.isDouble()) {
lineColor.setAlpha(value.toInt());
qDebug() << "lineColorAlpha:" << QString::number(value.toInt());
}
}
if(strLineName!="")
{
//新建曲线
//emit CallManage::getInstance()->sig_AddLine(strSlfName, strWellName, strTrackName, strLineName);
// emit mainWindow->getInstanceCallManage()->sig_AddLine_Property(strSlfName, strWellName, strTrackName, strLineName,
// newLeftScale, newRightScale, lineColor, width, lineStyle);
emit sig_AddLine_Property(strSlfName, strWellName, strTrackName, strLineName,
newLeftScale, newRightScale, lineColor, width, lineStyle);
}
}