#pragma once
#include<string>
#include<map>

// 水质模拟时间
enum QualityType
{
	Age, // 水龄
	Chlorine // 余氯
};

struct ResultItem
{
	std::string code;
	char szNo[64];
	std::string dDate;
	std::string dTime;
	float dQuality;
	float dChlorine;
	std::string dModifyTime;
};

// 节点结果模拟值
struct NodeResultItem:public ResultItem
{
	float dHead;
	float dPressure;
	float dElevation;
	float dDemand;	
};

// 管段结果模拟值
struct LinkResultItem:public ResultItem
{
	char szStatus[32];
	float dFlow;
	float dVelocity;
	float dHeadloss;// 单位水损
};

// 水池
struct TankResultItem :public ResultItem
{	
	float dTankVolume;
	float dTankMaxVolume;
	float dTankLevel;
};

// 方案结果
struct ProjResultItem
{
	char szNo[64];
	std::string code; // 编码，管段或者节点的数据标识
	std::string projCode; // 方案编码，标识是哪一个方案
	std::string dDateTime;  // 存储数据的当前时间
	std::string dTime; // 模拟的是哪一个时刻的值
};

// 方案点结果
struct ProjNodeResultItem : public ProjResultItem
{
	float dHead; // 水头
	float dPressure;  // 压力
	float dProjHead; // 方案水头
	float dProjPressure;// 方案压力
};

// 方案线结果
struct PorjPipeResultItem : public ProjResultItem
{
	float dFlow; // 流量
	float dVelocity; //流速
	float dHeadLoss;// 单位水头损失

	float dPorjHeadLoss;// 方案单位水头损失
	float dProjFlow; // 方案的流量
	float dProjVelocity; // 方案的流速
};

#define NodeResultItems std::map<std::string,NodeResultItem> 
#define LinkResultItems std::map<std::string,LinkResultItem> 
#define TankResultItems std::map<std::string,TankResultItem>

// 节点
typedef struct NodeCoord
{
	std::string xCoord; // x坐标
	std::string yCoord; // y坐标
} NodeCoord;

// 管段
typedef struct PipeCoord
{
	std::string startX; // 起始节点x
	std::string startY; // 起始节点Y
	std::string endX;// 终止节点X
	std::string endY;// 终止节点Y
}PipeCoord;

// 方案详情表信息结构


#define NodeCoords std::map<std::string,NodeCoord>
#define PipeCoords std::map<std::string,PipeCoord>

