#pragma once

#include "ado.h"
#include "DataStruct.h"
#include <fstream>
#include <iomanip>
#include "BAS_DRAW_FUN.h"
#include "BaseLine.h"
#include "DES_MODULE.h"
#include "CalJXAndGD.h"
#include "DrawRoad.h"
#include "GTZX.h"
#include "GlobalData.h"
#define ENC ::CDES_MODULE::_enc
#define WENC ::CDES_MODULE::_wenc
#define DEC ::CDES_MODULE::_dec
#define WDEC ::CDES_MODULE::_wdec

class StationDataBase :public BAS_DRAW_FUN
{
public :
	StationDataBase();
	void InitDataBase();
	virtual ~StationDataBase();
	int isNeedDisConnect;//是否需要断开 1需要 0不需要
	int isNeedConnect;//是否需要再连接 1需要 0不需要
	CAdoConnection m_adoConnection;
	CString	m_strSQL;
	CString	m_strError;
	CAdoRecordSet Report_input;
	CStringArray m_strTableNameList;
	CBaseLine* pBaseLine;
	CalJXAndGD pCalJXAndGD;
	vector<HDMDMX> Road_HDMDMXDATA;//道路地面线
	vector<mllk> DLHdmCS;//道路横断面参数
	vector<Rd_BX> pRDBJManage;//道路边界数组，形成类似GTZX，供切割用
	vector<DLBJ> pConRDManage;//道路半径
	vector<Road> pRoadManage;
	vector<DLBPDdata> pRoadBPDManage;
	vector<JDdata> pRoadJDdataManage;
	vector<DLHDM_read> pDLHDM_read;
	vector<SBLevel>SBLevelArray;
	vector<CBaseLine*> pJXGTZXArray;//全局变量
	double JDarray[MAXXLJDNUM][7];//交点
	int NJD;
	//ACHAR JDStrArray[MAXXLJDNUM][STR_SHORT];//交点号 字符串
	vector<Track>pBaseTrackManage;//基线汇总
	DLBZ DLB[MAXXLDLNUM];
	double DLBHeight[MAXDLNUM];;//断链表高度
	int NDL;
	CoorInfo StaCoorInfo;//转换信息
	FWTAB* FWPTB;//基线控制范围表
	int NFWPT;

	void YuLiuShiTaiGengGai(CString& SheJiShiTai);
	void GeneDLBJ(vector<DLBJ> pConRDManage, vector<Rd_BX>& pRDBJManage);
	void checkDLBJ(DLBJ pConRD, vector<Rd_BX>& pRDBJManage);
	void AnalysisDMX(vector<HDMDMX>& HDMDMXDATA);

	int Read_StationDbsDL(CString mdbFname, CString TabFname);
	int Read_StationDbs(CString mdbFname, CString TabFname, CString InquireString = "");//读取站场数据库中的数据
	vector<Switch>pSwitch;//道岔
	vector<CD>pCDManage;//车档
	vector<Track>pTrackManage;//股道汇总
	YXCTAB YXCB;//股道有效长表
	bool Disconnect_StationDbs();
	int IsIniList;//是否需要初始化数据库列表 默认1
	int NDC;
	bool FindTable(CString strTempName);//查找表是否存在于mdb中
	ACHAR CZJXStrArray[MAXXLJDNUM][STR_SHORT];//参照基线编号
	QXJD QXJDB[MAXXLJDNUM];
	ACHAR JDGH[STR_SHORT];
	ACHAR JDStrArray[MAXXLJDNUM][STR_SHORT];//交点号 字符串
	ACHAR QXBHStrArray[MAXXLJDNUM][STR_SHORT];//曲线编号数组
	GGLXArray m_GGLXArray;//道床边坡
	GZLCArray m_GZLCArray;//轨枕里程
	HLGLXArray m_HLGLXArray;//护轮轨
	int NPD;
	vector<PDTAB> PDB;//股道坡度
	BZTAB BZB;//股道标注表
	int NQX;
	QXTAB* QXB;//曲线表
	vector<PGB> GDPGBArray;//股道配轨表
	int IsXLMdb;//是否线路Mdb
	void PutTheLCInACstring(vector<CString> ptArr, CString& TempData);
	ChaiChuArray m_ChaiChuArray;//拆除段
	LYDArray m_LYDArray;//利用段
	DZLCArray m_DZLCArray;//道砟里程
	DHArray m_DHArray;//电化
	DCDKArray m_DCDKArray;//道床顶宽
};