#include #include "zxSysUtils.h" #include "zxLogInstance.h" #include "mModuleDefines.h" #include "iWxPvtMain.h" #include "nmWxDataKrog.h" #include "nmWxDataBasic.h" #include "ZxDataWell.h" #include "nmDataAnalInfo.h" #include "nmDataAnalRun.h" #include "nmAnalRun.h" nmAnalRun::nmAnalRun() { m_pDataWell = NULL; m_pDataAnalInfo = NULL; m_pDataAnalRun = NULL; m_vecWxDatas.clear(); m_listBasicInfos.clear(); m_bLoaded = false; } nmAnalRun::~nmAnalRun() { } void nmAnalRun::init() { m_vecWxDatas.clear(); QStringList listPhases; listPhases << s_Tag_Oil_EN << s_Tag_Gas_EN << s_Tag_Water_EN; iWxPvtMain* pWx = new iWxPvtMain(); pWx->setPhaseInfos(listPhases); QString sJobDir = ""; pWx->setJobTag(sJobDir); pWx->setWizardMode(true); m_vecWxDatas << new nmWxDataBasic(); m_vecWxDatas << pWx;//new iWxPvtMain(); m_vecWxDatas << new nmWxDataKrog(); // // Basic与PvtMain connect(m_vecWxDatas[0], SIGNAL(sigParasChanged(QMap&)), \ m_vecWxDatas[1], SLOT(slotParasObtained(QMap&))); // // Anal标识 connect(m_vecWxDatas[1], SIGNAL(sigGetJogTag(QString&)), \ m_vecWxDatas[0], SLOT(slotGetAnalTag(QString&))); // connect(m_vecWxDatas[2], SIGNAL(sigGetJogTag(QString&)), \ // m_vecWxDatas[0], SLOT(slotGetAnalTag(QString&))); foreach (iWxBase* p, m_vecWxDatas) { p->setDataWell(m_pDataWell); } } void nmAnalRun::refresh() { foreach (iWxBase* p, m_vecWxDatas) { p->initUI(); } if (NULL != m_pDataAnalInfo) { ((nmWxDataBasic*)m_vecWxDatas[0])->setAnalName(m_pDataAnalInfo->getName()); } if (NULL != m_pDataAnalRun) { QByteArray o = m_pDataAnalRun->getDataBasic(); m_vecWxDatas[0]->loadFromByteArr(o); o = m_pDataAnalRun->getDataPvt(); m_vecWxDatas[1]->loadFromByteArr(o); o = m_pDataAnalRun->getDataKrog(); m_vecWxDatas[2]->loadFromByteArr(o); } } void nmAnalRun::onSerialize(ZxSerializer* ser) { int n = 0; foreach (iWxBase* p, m_vecWxDatas) { QString sTag = QString("Jun_%1").arg(n++); ser->push(sTag); p->onSerialize(ser); ser->pop(); } } void nmAnalRun::onDeserialize(ZxSerializer* ser) { int n = 0; foreach (iWxBase* p, m_vecWxDatas) { QString sTag = QString("Jun_%1").arg(n++); ser->push(sTag); p->onDeserialize(ser); ser->pop(); } } void nmAnalRun::setDataWell(ZxDataWell* p) { m_pDataWell = p; foreach (iWxBase* p1, m_vecWxDatas) { p1->setDataWell(p); } } void nmAnalRun::setDataAnalInfo(nmDataAnalInfo* p) { if (NULL == p) { return; } m_pDataAnalInfo = p; if (NULL == m_pDataWell) { setDataWell(dynamic_cast(p->getParent())); } } void nmAnalRun::setDataAnalRun(nmDataAnalRun* p) { m_pDataAnalRun = p; } nmDataAnalInfo* nmAnalRun::getDataAnalInfo() { return m_pDataAnalInfo; } nmDataAnalRun* nmAnalRun::getDataAnalRun() { return m_pDataAnalRun; } QString nmAnalRun::getAnalId() { if (NULL != m_pDataAnalInfo) return m_pDataAnalInfo->getCode(); return ""; } iWxBase* nmAnalRun::getWxDataOf(int n) { if (n >= 0 && n < m_vecWxDatas.count()) { return m_vecWxDatas[n]; } return NULL; } bool nmAnalRun::getBaseInfos(VecVariant &vec, int nColCount) { vec.clear(); if (NULL != m_pDataAnalInfo) { vec << m_pDataAnalInfo->getName(); vec << m_pDataAnalInfo->getCode(); } else { vec << ""; vec << ""; } if (m_listBasicInfos.count() == 3) { foreach (QString s, m_listBasicInfos) { vec << s; } } else { vec << "" << "" << ""; } if (NULL != m_pDataAnalInfo) { vec << m_pDataAnalInfo->getRemark(); } else { vec << ""; } return true; } void nmAnalRun::ensureLoaded() { if (m_bLoaded) { return; } init(); refresh(); m_bLoaded = true; } void nmAnalRun::setLoaded(bool b) { m_bLoaded = b; } bool nmAnalRun::saveBasicAsByteArr(QByteArray& v) { QString sRoot = this->objectName() + "abc"; ZxXpfDoc xpf(sRoot); ZxSerializer ser(&xpf, true); // onSerialize(&ser); { QString s1 = "", s2 = ""; double f = SYS_VALUE_INVALID; bool b = false; nmWxDataBasic* pBasic = dynamic_cast(getWxDataOf(0)); if (NULL != pBasic) { s1 = pBasic->getTestType(); s2 = pBasic->getFluidOption(); f = pBasic->getWellR(); b = pBasic->isPhaseS(); } ser.write("TestType", s1); ser.write("FluidOption", s2); ser.write("WellR", f); ser.write("SinglePhase", b); // 只有新建Anal时用到,特殊处理 if (m_listBasicInfos.count() == 0) { m_listBasicInfos << s1 << s2 << QString("%1").arg(f); } } QDataStream out(&v, QIODevice::WriteOnly); out.setVersion(QDataStream::Qt_4_8); if (xpf.save(out)) { return true; } else { return false; } } bool nmAnalRun::loadLoadFromByteArr(QByteArray& v) { if (v.isEmpty() || v.isNull()) { return false; } QDataStream in(&v, QIODevice::ReadOnly); in.setVersion(QDataStream::Qt_4_8); QString sRoot = this->objectName() + "abc"; ZxXpfDoc xpf(sRoot); if (!xpf.load(in)) { zxLogRunW(tr("Failed to load ByteArray")); return false; } ZxSerializer ser(&xpf, false); //onDeserialize(&ser); QString s1 = "", s2 = ""; double f = SYS_VALUE_INVALID; //bool b = true; ser.read("TestType", s1); ser.read("FluidOption", s2); ser.read("WellR", f); m_listBasicInfos.clear(); m_listBasicInfos << s1 << s2 << QString("%1").arg(f); return true; } bool nmAnalRun::isPhaseS() { nmWxDataBasic* pBasic = dynamic_cast(getWxDataOf(0)); if (NULL != pBasic) { return pBasic->isPhaseS(); } if (m_pDataAnalInfo != NULL) { QString s = m_pDataAnalInfo->getRemark(); if (!s.isEmpty()) { return _isSame(s, s_Tag_Phase_S); } } return true; } QString nmAnalRun::getTestType() { if (m_listBasicInfos.count() > 0) { return m_listBasicInfos.at(0); } return ""; } QString nmAnalRun::getFluidOption() { if (m_listBasicInfos.count() > 1) { return m_listBasicInfos.at(1); } // else // { // ensureLoaded(); // nmWxDataBasic* pBasic = dynamic_cast(getWxDataOf(0)); // if (NULL != pBasic) // { // return pBasic->getFluidOption(); // } // } return ""; }