#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 double &fWellRadius); 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 &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; //井类别 double m_fWellRadius; //井半径 double m_fLocationX; //井坐标X double m_fLocationY; //井坐标Y // QString m_dtBase; //基准时间 };