You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWATI/Include/mData/mProjectManager/DataModels/ZxDataWell.h

158 lines
4.4 KiB
C

#pragma once
#include "mProjectManager_global.h"
#include "ZxDataObjectStrExUser.h"
class ZxDataJobInfo;
class ZxRstJobUtils;
class ZxDataGaugeP;
class ZxDataGaugeF;
// 井对象
class M_PROJECTMANAGER_EXPORT ZxDataWell :
public ZxDataObjectStrExUser
{
ZX_DECLARE_DYNAMIC
public:
ZxDataWell(ZxDataObject* parent = 0);
ZxDataWell(const ZxDataWell &other);
virtual ~ZxDataWell();
ZxDataWell &operator = (const ZxDataWell &other);
bool operator == (const ZxDataWell &other) const;
bool operator != (const ZxDataWell &other) const;
signals:
void sigThisss(int);
public:
// 接口
virtual ZxDataObject* clone();
virtual QString type() const;
// 加载保存
virtual bool _parseData(VecVariant vec, int& n);
virtual bool _sumUpData(VecVariant& vec);
// 序列化
virtual void onSerialize(ZxSerializer* ser);
virtual void onDeserialize(ZxSerializer* ser);
// Icon
virtual QIcon getIcon(bool expanded) const;
// 该函数是加载子类对象仅仅加载code之类的关键信息
// 比如在建立树时,创建该节点。
virtual bool createChildren();
virtual bool createChildrenResults();
virtual bool createChildrenFluid();
virtual bool createChildrenRes();
virtual bool createChildrenLayer();
virtual bool createChildrenGuageP();
virtual bool createChildrenGuageF();
virtual bool createChildrenGas();
// 试井之星Other
virtual bool createChildrenOther();
// 数据表编辑保存之后,刷新当前井的内存
void fuzzyChildrenOf(VVecVariant& vvec, QString sTable);
public:
// 油田
void setFieldCode(const QString& s);
QString getFieldCode() const;
void setFieldName(const QString& s);
QString getFieldName() const;
// 区块
void setBlockCode(const QString &sBlockCode);
QString getBlockCode() const;
void setBlockName(const QString &sBlockName);
QString getBlockName() const;
// 井类型
void setWellTypeCn(const QString &sWellType);
QString getWellTypeCn() const;
QString getWellTypeEn() const;
int getWellTypeIndex() const;
bool isGasWell()const;
void makesureWellType();
// 井类别
void setWellClass(const QString &sWellClass);
QString getWellClass() const;
// 井半径
void setWellRadius(const float &fWellRadius);
float getWellRadius() const;
// 井坐标X
void setLocationX(const float &fLocationX);
float getLocationX() const;
// 井坐标Y
void setLocationY(const float &fLocationY);
float getLocationY() const;
// 井描述
void setWellRemark(const QString &sWellRemark);
QString getWellRemark() const;
// 基准时间
// void setBaseDT(const QString& dt);
// QString getBaseDT() const;
/// @brief 根据参数sPara获取当前井的参数值主要是数据库里面
/// @param sPara:传入的参数,
/// 以英文方式,比如"h" "Ct"等,大小写不敏感
/// @param f:返回值,如果有
bool getValueOfPara(QString sPara, double& d);
bool getValueOfPara(QString sPara, QVariant& o);
// 获取Well/Job后台的路径
static QString getJobDirOf(ZxDataWell* pWell,
ZxRstJobUtils* pJob = NULL,
QString sWndID = "");
private:
// 井基础、储层、流体数据表获取数据
bool getDbValueFromBasic(QString s, double& d);
bool getDbValueFromRes(QString s, double& d);
bool getDbValueFromFluid(QString s, double& d);
bool getDbValueFromOther(QString s, double& d);
bool getDbValueFromBasic(QString s, QVariant& v);
bool getDbValueFromRes(QString s, QVariant& v);
bool getDbValueFromFluid(QString s, QVariant& v);
bool getDbValueFromOther(QString s, QVariant& v);
protected:
QString m_sFieldCode; //油田代码
QString m_sFieldName; //油田名称
QString m_sBlockCode; //区块代码
QString m_sBlockName; //区块名称
// QString m_sWellCode; //井号
// QString m_sWellName; //井名
QString m_sWellTypeCn; //井型,这是中文
QString m_sWellTypeEn; //井型英文不涉及序列化根据中文以及ini进行转换
QString m_sWellClass; //井类别
float m_fWellRadius; //井半径
float m_fLocationX; //井坐标X
float m_fLocationY; //井坐标Y
// QString m_dtBase; //基准时间
};