/********************************************************************************
*		ソースファイル名：DataToDB.h										
*		用            途：データベース格納クラス									
*		備            考：														
*		履            歴：														
********************************************************************************/
/****************************
*   コンパイル環境定数	    *
****************************/
#pragma once
/****************************
*   インクルードファイル    *
****************************/
#include "CollectCommon.h"
#include "Thread.h"
#include "MemManager.h"
#include "MySqlControl.h"
#include "RingQueue.h"
/****************************
*        マクロ定義			*
****************************/
/****************************
*        構造体定義		    *
****************************/
/****************************
*        クラス定義		    *
****************************/
// CDataToDB
class CDataToDB : public CThread 
{

public:
	// 公開メソッド
									CDataToDB();
	virtual							~CDataToDB();

									CDataToDB(const CDataToDB* p);
									CDataToDB(const CDataToDB& p);
									CDataToDB& operator =(const CDataToDB& p);

	//インスタンス取得（初回は生成）
	static	CDataToDB&	GetInstance(void);

			BOOL					Initialize( 
												CRingQueue* pMiningQueue		,
												CRingQueue* pSETTING1Queue		,
												CRingQueue* pSETTING2Queue		,
												CRingQueue* pSETTING3Queue		,
												CRingQueue* pSETTING4Queue		,
												CRingQueue* pProductsInfoDataQueue
											  ) ;									// 初期化

private:
	// 非公開メソッド
	virtual	BOOL					Main();													// スレッドの処理実体
			INT32					Wait( UINT32 uWaitTime_ms ) ;							// 待機する

			BOOL					UpdateMeasureData( 
														CString strWorkID, 
														CString strDateTime, 
														BYTE	byDataBit,
														BYTE	byNgBit 
													 ) ;									// 生産情報データ計測データ更新
			BOOL					UpdateLatestEquipmentError( 
														CString strWorkID, 
														CString strDateTime, 
														INT32	nEquipmentID,
														INT32	nErrorNo
													 ) ;									// 生産情報データ直近設備異常データ更新

			BOOL					SetMiningData	 ( MINING_DATA&		tData ) ;			// マイニングデータ格納
			BOOL					SetSETTING1Data	 ( SETTING1_DATA&   tData ) ;			// 設定１データ格納
			BOOL					SetSETTING2Data	 ( SETTING2_DATA&	tData ) ;			// 設定２データ格納
			BOOL					SetSETTING3Data	 ( SETTING3_DATA&	tData ) ;			// 設定３データ格納
			BOOL					SetSETTING4Data	 ( SETTING4_DATA&   tData ) ;			// 設定４データ格納
			BOOL					SetProductsInfoData(PRODUCTSINFO_DATA& tData);			// 生産情報データ格納

private:
	// 非公開メンバー
			BOOL					m_bInitialize ;					// 初期化完了フラグ
			CMySqlControl			m_SqlControl ;					// データベース制御

			CRingQueue			   *m_pMiningQueue ;				// マイニングデータ格納キュー
			CRingQueue			   *m_pSETTING1Queue ;				// 設定１データ格納キュー
			CRingQueue			   *m_pSETTING2Queue ;				// 設定２データ格納キュー
			CRingQueue			   *m_pSETTING3Queue ;				// 設定３データ格納キュー
			CRingQueue			   *m_pSETTING4Queue ;				// 設定４データ格納キュー
			CRingQueue				*m_pProductsInfoDataQueue;        // 生産情報データ格納キュー

			CString					m_aMiningCol		[NOF_MINING_DATA] ;
			CString					m_aSETTING1Col		[NOF_SETTING1_DATA] ;
			CString					m_aSETTING2Col		[NOF_SETTING2_DATA] ;
			CString					m_aSETTING3Col		[NOF_SETTING3_DATA] ;
			CString					m_aSETTING4Col		[NOF_SETTING4_DATA] ;
			CString					m_aToolStatusCol[NOF_PRODUCTINFO_DATA];
};			

/****************************
*         関数 宣言		    *
****************************/
/****************************
*		　変数　宣言	    *
****************************/
/****************************
*   コンパイル環境定数	    *
****************************/

