|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#include "mProjectManager_global.h"
|
|
|
|
|
|
#include "ZxDataObjectStrExUser.h"
|
|
|
|
|
|
|
|
|
|
|
|
class ZxRstUtils;
|
|
|
|
|
|
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();
|
|
|
|
|
|
virtual bool createChildrenWellBore();
|
|
|
|
|
|
|
|
|
|
|
|
// 试井之星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& s);
|
|
|
|
|
|
QString getBlockCode() const;
|
|
|
|
|
|
void setBlockName(const QString& s);
|
|
|
|
|
|
QString getBlockName() const;
|
|
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////
|
|
|
|
|
|
// 井类型
|
|
|
|
|
|
|
|
|
|
|
|
// 井类型(Cn对应中文、En对应英文)具体参见 m_sWellTypeCn m_sWellTypeEn说明
|
|
|
|
|
|
// 设置中文,内部自动设定英文
|
|
|
|
|
|
void setWellTypeCn(const QString& s);
|
|
|
|
|
|
// 返回中文
|
|
|
|
|
|
QString getWellTypeCn() const;
|
|
|
|
|
|
// 返回英文
|
|
|
|
|
|
QString getWellTypeEn() const;
|
|
|
|
|
|
|
|
|
|
|
|
// 读取ini进行中英文关联
|
|
|
|
|
|
void makesureWellType();
|
|
|
|
|
|
|
|
|
|
|
|
// 这是基于井类型的延伸,油气水分别对应0,1,2,主要用于大字段存储(多相数据)
|
|
|
|
|
|
int getWellTypeIndex() const;
|
|
|
|
|
|
|
|
|
|
|
|
// 再次封装,是否气井,方便调用(比如拟压力、万方等时候)
|
|
|
|
|
|
bool isGasWell() const;
|
|
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////
|
|
|
|
|
|
// 井类型
|
|
|
|
|
|
|
|
|
|
|
|
// 井类别
|
|
|
|
|
|
// 设置中文,内部自动设定英文
|
|
|
|
|
|
void setWellClassCn(const QString& s);
|
|
|
|
|
|
// 返回中文
|
|
|
|
|
|
QString getWellClassCn() const;
|
|
|
|
|
|
// 返回英文
|
|
|
|
|
|
QString getWellClassEn() const;
|
|
|
|
|
|
|
|
|
|
|
|
// 读取ini进行中英文关联
|
|
|
|
|
|
void makesureWellClass();
|
|
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
// 井半径
|
|
|
|
|
|
void setWellRadius(const double& d);
|
|
|
|
|
|
double getWellRadius() const;
|
|
|
|
|
|
|
|
|
|
|
|
// 井坐标X
|
|
|
|
|
|
void setLocationX(const double& d);
|
|
|
|
|
|
double getLocationX() const;
|
|
|
|
|
|
|
|
|
|
|
|
// 井坐标Y
|
|
|
|
|
|
void setLocationY(const double& d);
|
|
|
|
|
|
double getLocationY() const;
|
|
|
|
|
|
|
|
|
|
|
|
// 井描述
|
|
|
|
|
|
void setWellRemark(const QString& s);
|
|
|
|
|
|
QString getWellRemark() const;
|
|
|
|
|
|
|
|
|
|
|
|
// 基准时间
|
|
|
|
|
|
// void setBaseDT(const QString& dt);
|
|
|
|
|
|
// QString getBaseDT() const;
|
|
|
|
|
|
|
|
|
|
|
|
/// @brief 根据参数sPara,获取当前井的参数值(主要是数据库里面)
|
|
|
|
|
|
/// @param sPara:传入的参数,
|
|
|
|
|
|
/// 以英文方式,比如"h" "Ct"等,大小写不敏感
|
|
|
|
|
|
/// @param d:返回值,如果有
|
|
|
|
|
|
bool getValueOfPara(QString sPara, double& d);
|
|
|
|
|
|
bool getValueOfPara(QString sPara, QVariant& o);
|
|
|
|
|
|
|
|
|
|
|
|
// 获取Well/成果后台的路径
|
|
|
|
|
|
static QString getRssDirOf(ZxDataWell* pWell,
|
|
|
|
|
|
ZxRstUtils* pRst = nullptr,
|
|
|
|
|
|
QString sWndID = "");
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
|
|
// 井基础、储层、流体数据表获取数据
|
|
|
|
|
|
bool getDbValueFromBasic(QString s, double& d);
|
|
|
|
|
|
bool getDbValueFromBore(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 getDbValueFromBore(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进行转换,比如 Oil、Gas、Water
|
|
|
|
|
|
|
|
|
|
|
|
QString m_sWellClassCn; //井类别,中文,比如 直井、压裂直井、水平井、多段压裂水平井
|
|
|
|
|
|
QString m_sWellClassEn; //井类别,英文,不涉及序列化,根据中文以及ini进行转换,
|
|
|
|
|
|
//比如 VerticalWell、VerticalFracturedWell、
|
|
|
|
|
|
// HorizontalWell、HorizontalMultiFracturedWell
|
|
|
|
|
|
|
|
|
|
|
|
double m_dWellRadius; //井半径
|
|
|
|
|
|
double m_dLocationX; //井坐标X
|
|
|
|
|
|
double m_dLocationY; //井坐标Y
|
|
|
|
|
|
|
|
|
|
|
|
// QString m_dtBase; //基准时间
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|