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++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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