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.
nmWTAI-Platform/Include/mData/mProjectManager/DataModels/ZxDataWell.h

192 lines
5.7 KiB
C

#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; //基准时间
};