#pragma once
#include <map>
#include <vector>
#include <string>
#include "CivProjSmulResultCache.h"

/**
方案模拟
*/
class CivProjSimulation
{
public:
	explicit CivProjSimulation(const std::string& uri);
	~CivProjSimulation();

	/**
	 *@brief 方案模拟
	 *@param [std::string] projCode 方案编码
	 *@param [std::string] time 模拟的时段
	 */
	bool simulationProj(const std::string& projCode,const std::string& time);

	/**
	*@brief 计算数据刷进数据库
	*/
	bool saveToDb();

private:
	/**
	*@brief 不加方案的水力计算
	*@param [char*] inp 计算inp格式文件
	*/
	bool projBeforeHydrCompute(char* inp);

	/**
	*@brief 方案的水力计算
	*@param [char*] inp 计算inp格式文件
	*/
	bool projHydrCompute(char* inp);

	void getNodeResult();

	void getLinkResult();

	void getProjNodeResult();

	void getProjLinkResult();

private:
	std::string mUri;
	CivProjSmulResultCache mProjCache; //方案模拟结果缓存

	std::string mRptFile;
	std::string mBinFile;

	std::string mSimulTime; // 模拟的时刻
	std::string mProjCode; // 方案编码
};
