|  | @@ -23,32 +23,36 @@ PRIMARY KEY (bid ASC));"
 | 
	
		
			
				|  |  |  #define _INSERT_MID_TABLE_ "INSERT INTO mid(bid, number, pid, ctype, version, purl, psize, pmd5)VALUES\
 | 
	
		
			
				|  |  |  (%s, %s, %s, %s, %s, %s, %s, %s);"
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -// KeyCopy表;
 | 
	
		
			
				|  |  | +// Key表;
 | 
	
		
			
				|  |  |  #define _CREATE_KEYS_TABLE_ \
 | 
	
		
			
				|  |  |  	"CREATE TABLE keys \
 | 
	
		
			
				|  |  | -(pid  INTEGER NOT NULL,\
 | 
	
		
			
				|  |  | +(bid  TEXT(16) NOT NULL,\
 | 
	
		
			
				|  |  |  sn  TEXT(32) PRIMARY KEY NOT NULL,\
 | 
	
		
			
				|  |  | +pid  INTEGER NOT NULL,\
 | 
	
		
			
				|  |  |  keys  TEXT NOT NULL,\
 | 
	
		
			
				|  |  |  copy_date  DATETIME DEFAULT '',\
 | 
	
		
			
				|  |  | -report_date  DATETIME DEFAULT '',\
 | 
	
		
			
				|  |  | -copy_status  INTEGER NOT NULL DEFAULT 0,\
 | 
	
		
			
				|  |  | -report_status  INTEGER NOT NULL DEFAULT 0);"
 | 
	
		
			
				|  |  | -#define _SELECT_KEYS_TABLE_ "SELECT pid, sn, keys, copy_date, report_date, copy_status, report_status FROM keys"
 | 
	
		
			
				|  |  | +report_date  DATETIME DEFAULT '');"
 | 
	
		
			
				|  |  | +#define _SELECT_KEYS_TABLE_ "SELECT bid, pid, sn, keys, copy_date, report_date FROM keys"
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Log表;
 | 
	
		
			
				|  |  |  #define _CREATE_LOG_TABLE_ \
 | 
	
		
			
				|  |  |  	"CREATE TABLE log \
 | 
	
		
			
				|  |  | -(type  TEXT(32) NOT NULL,\
 | 
	
		
			
				|  |  | -sn  TEXT NOT NULL,\
 | 
	
		
			
				|  |  | +(bid  TEXT(16) NOT NULL,\
 | 
	
		
			
				|  |  | +type  TEXT(32) NOT NULL,\
 | 
	
		
			
				|  |  | +sn  TEXT(32) NOT NULL,\
 | 
	
		
			
				|  |  |  content  TEXT NOT NULL,\
 | 
	
		
			
				|  |  |  gdate  DATETIME DEFAULT current_timestamp,\
 | 
	
		
			
				|  |  |  report_date  DATETIME DEFAULT '',\
 | 
	
		
			
				|  |  | -report_status  INTEGER NOT NULL DEFAULT 0,\
 | 
	
		
			
				|  |  |  PRIMARY KEY (type, sn));"
 | 
	
		
			
				|  |  | -#define _SELECT_LOG_TABLE_ "SELECT type, sn, content, gdate, report_status FROM log"
 | 
	
		
			
				|  |  | +#define _SELECT_LOG_TABLE_ "SELECT type, bid, sn, content, gdate, report_date FROM log"
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +#define _SELECT_BID_INFO__ \
 | 
	
		
			
				|  |  | +"select mid.number as tc, \
 | 
	
		
			
				|  |  | +count(keys.bid) as ac,\
 | 
	
		
			
				|  |  | +count(case when keys.copy_date <> '' then '抄写成功' end) as cc,\
 | 
	
		
			
				|  |  | +count(case when keys.report_date <> '' and keys.copy_date <> '' then '上报成功' end) as rc \
 | 
	
		
			
				|  |  | +from mid inner join keys on mid.bid = keys.bid where mid.bid = '%s';"
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -//#define FREE_MSG if ( m_pszErrmsg ) { printf(m_pszErrmsg);sqlite3_free(m_pszErrmsg); m_pszErrmsg = NULL;}
 | 
	
		
			
				|  |  |  #define FREE_MSG if ( psqlite_error )  \
 | 
	
		
			
				|  |  |  	printf("%s\n",psqlite_error),\
 | 
	
		
			
				|  |  |  	sqlite3_free(psqlite_error),\
 | 
	
	
		
			
				|  | @@ -138,7 +142,7 @@ BOOL CDataImpl::QueryTable(std::string table)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |  	if ( table.size() == 0 )
 | 
	
		
			
				|  |  |  	{
 | 
	
		
			
				|  |  | -		//Global::WriteTextLog(_T("ExecteSQL:执行语句空!"));
 | 
	
		
			
				|  |  | +		//Global::WriteTextLog(_T("QueryTable:表名空!"));
 | 
	
		
			
				|  |  |  		return FALSE;
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -155,7 +159,7 @@ BOOL CDataImpl::QueryTable(std::string table)
 | 
	
		
			
				|  |  |  	int sqlite_error = sqlite3_get_table(m_psqlite3, szSql, &pazResult, &nRow, &nCol, &psqlite_error);
 | 
	
		
			
				|  |  |  	if ( sqlite_error != SQLITE_OK)
 | 
	
		
			
				|  |  |  	{
 | 
	
		
			
				|  |  | -		//Global::WriteTextLog(_T("QueryContactsType:%s"), m_pszErrmsg);
 | 
	
		
			
				|  |  | +		//Global::WriteTextLog(_T("QueryTable:%s"), psqlite_error);
 | 
	
		
			
				|  |  |  		FREE_MSG;
 | 
	
		
			
				|  |  |  		return FALSE;
 | 
	
		
			
				|  |  |  	}
 | 
	
	
		
			
				|  | @@ -183,7 +187,7 @@ INT CDataImpl::QueryMidInfo(std::string order, STMid &data)
 | 
	
		
			
				|  |  |  	int sqlite_error = sqlite3_get_table(m_psqlite3, strSql.c_str(), &pazResult, &nRow, &nCol, &psqlite_error);
 | 
	
		
			
				|  |  |  	if ( sqlite_error != SQLITE_OK)
 | 
	
		
			
				|  |  |  	{
 | 
	
		
			
				|  |  | -		//Global::WriteTextLog(_T("QueryContactsType:%s"), m_pszErrmsg);
 | 
	
		
			
				|  |  | +		//Global::WriteTextLog(_T("QueryMidInfo:%s"), psqlite_error);
 | 
	
		
			
				|  |  |  		FREE_MSG;
 | 
	
		
			
				|  |  |  		return -1;
 | 
	
		
			
				|  |  |  	}
 | 
	
	
		
			
				|  | @@ -225,6 +229,7 @@ INT CDataImpl::QueryMidInfo(std::string order, STMid &data)
 | 
	
		
			
				|  |  |  	return nRow;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +// 主要返回keys,用于抄写;
 | 
	
		
			
				|  |  |  INT CDataImpl::QueryKeyInfo(std::string sn, STKeys &data)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |  	if ( m_psqlite3 == NULL )
 | 
	
	
		
			
				|  | @@ -242,31 +247,19 @@ INT CDataImpl::QueryKeyInfo(std::string sn, STKeys &data)
 | 
	
		
			
				|  |  |  	int sqlite_error = sqlite3_get_table(m_psqlite3, strSql.c_str(), &pazResult, &nRow, &nCol, &psqlite_error);
 | 
	
		
			
				|  |  |  	if ( sqlite_error != SQLITE_OK)
 | 
	
		
			
				|  |  |  	{
 | 
	
		
			
				|  |  | -		//Global::WriteTextLog(_T("QueryContactsInfo:%s"), m_pszErrmsg);
 | 
	
		
			
				|  |  | +		//Global::WriteTextLog(_T("QueryKeyInfo:%s"), psqlite_error);
 | 
	
		
			
				|  |  |  		FREE_MSG;
 | 
	
		
			
				|  |  |  		return -1;
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	if ( nRow == 1)
 | 
	
		
			
				|  |  |  	{
 | 
	
		
			
				|  |  | -#ifndef USE_UTF8
 | 
	
		
			
				|  |  | -		data.pid = pazResult[nCol+0];
 | 
	
		
			
				|  |  | -		data.sn = pazResult[nCol+1];
 | 
	
		
			
				|  |  | -		data.keys = pazResult[nCol+2];
 | 
	
		
			
				|  |  | -		data.copy_date = pazResult[nCol+3];
 | 
	
		
			
				|  |  | -		data.report_date = pazResult[nCol+4];
 | 
	
		
			
				|  |  | -		data.copy_status = pazResult[nCol+5];
 | 
	
		
			
				|  |  | -		data.report_status = pazResult[nCol+6];
 | 
	
		
			
				|  |  | -#else
 | 
	
		
			
				|  |  | -		// 由Native for SQLite3插入的数据,都是utf8格式;
 | 
	
		
			
				|  |  | -		data.pid = pazResult[nCol+0];
 | 
	
		
			
				|  |  | -		data.sn = CharEncoding::UTF82ASCII(pazResult[nCol+1]);
 | 
	
		
			
				|  |  | -		data.keys = CharEncoding::UTF82ASCII(pazResult[nCol+2]);
 | 
	
		
			
				|  |  | -		data.copy_date = CharEncoding::UTF82ASCII(pazResult[nCol+3]);
 | 
	
		
			
				|  |  | -		data.report_date = CharEncoding::UTF82ASCII(pazResult[nCol+4]);
 | 
	
		
			
				|  |  | -		data.copy_status = pazResult[nCol+5];
 | 
	
		
			
				|  |  | -		data.report_status = pazResult[nCol+6];
 | 
	
		
			
				|  |  | -#endif
 | 
	
		
			
				|  |  | +		data.bid = pazResult[nCol+0];
 | 
	
		
			
				|  |  | +		data.pid = pazResult[nCol+1];
 | 
	
		
			
				|  |  | +		data.sn = pazResult[nCol+2];
 | 
	
		
			
				|  |  | +		data.keys = pazResult[nCol+3];
 | 
	
		
			
				|  |  | +		data.copy_date = pazResult[nCol+4];
 | 
	
		
			
				|  |  | +		data.report_date = pazResult[nCol+5];
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	sqlite3_free_table(pazResult);
 | 
	
	
		
			
				|  | @@ -284,11 +277,11 @@ INT CDataImpl::QueryUnReportKeyInfo(std::vector<STKeys> &vtdata)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	char** pazResult = NULL;
 | 
	
		
			
				|  |  |  	char* psqlite_error = NULL;
 | 
	
		
			
				|  |  | -	std::string strSql = "SELECT sn,copy_date FROM keys WHERE copy_date <> '' and report_status in(0,-1)";
 | 
	
		
			
				|  |  | +	std::string strSql = "SELECT sn,copy_date FROM keys WHERE copy_date <> '' and report_date = ''";
 | 
	
		
			
				|  |  |  	int sqlite_error = sqlite3_get_table(m_psqlite3, strSql.c_str(), &pazResult, &nRow, &nCol, &psqlite_error);
 | 
	
		
			
				|  |  |  	if ( sqlite_error != SQLITE_OK)
 | 
	
		
			
				|  |  |  	{
 | 
	
		
			
				|  |  | -		//Global::WriteTextLog(_T("QueryContactsInfo:%s"), m_pszErrmsg);
 | 
	
		
			
				|  |  | +		//Global::WriteTextLog(_T("QueryUnReportKeyInfo:%s"), psqlite_error);
 | 
	
		
			
				|  |  |  		FREE_MSG;
 | 
	
		
			
				|  |  |  		return -1;
 | 
	
		
			
				|  |  |  	}
 | 
	
	
		
			
				|  | @@ -319,7 +312,7 @@ INT CDataImpl::QueryLogInfo(std::string sn, STLog &data)
 | 
	
		
			
				|  |  |  	int sqlite_error = sqlite3_get_table(m_psqlite3, _SELECT_LOG_TABLE_, &pazResult, &nRow, &nCol, &psqlite_error);
 | 
	
		
			
				|  |  |  	if ( sqlite_error != SQLITE_OK)
 | 
	
		
			
				|  |  |  	{
 | 
	
		
			
				|  |  | -		//Global::WriteTextLog(_T("QueryTaskInfo:%s"), m_pszErrmsg);
 | 
	
		
			
				|  |  | +		//Global::WriteTextLog(_T("QueryLogInfo:%s"), psqlite_error);
 | 
	
		
			
				|  |  |  		FREE_MSG;
 | 
	
		
			
				|  |  |  		return -1;
 | 
	
		
			
				|  |  |  	}
 | 
	
	
		
			
				|  | @@ -328,17 +321,19 @@ INT CDataImpl::QueryLogInfo(std::string sn, STLog &data)
 | 
	
		
			
				|  |  |  	{
 | 
	
		
			
				|  |  |  #ifndef USE_UTF8
 | 
	
		
			
				|  |  |  		data.type = pazResult[nCol+0];
 | 
	
		
			
				|  |  | -		data.sn = pazResult[nCol+1];
 | 
	
		
			
				|  |  | -		data.content = pazResult[nCol+2];
 | 
	
		
			
				|  |  | -		data.gdate = pazResult[nCol+3];
 | 
	
		
			
				|  |  | -		data.report_status = pazResult[nCol+4];
 | 
	
		
			
				|  |  | +		data.bid = pazResult[nCol+1];
 | 
	
		
			
				|  |  | +		data.sn = pazResult[nCol+2];
 | 
	
		
			
				|  |  | +		data.content = pazResult[nCol+3];
 | 
	
		
			
				|  |  | +		data.gdate = pazResult[nCol+4];
 | 
	
		
			
				|  |  | +		data.report_date = pazResult[nCol+5];
 | 
	
		
			
				|  |  |  #else
 | 
	
		
			
				|  |  |  		// 由Native for SQLite3插入的数据,都是utf8格式;
 | 
	
		
			
				|  |  |  		data.type = CharEncoding::UTF82ASCII(pazResult[nCol+0]);
 | 
	
		
			
				|  |  | -		data.sn = CharEncoding::UTF82ASCII(pazResult[nCol+1]);
 | 
	
		
			
				|  |  | -		data.content = CharEncoding::UTF82ASCII(pazResult[nCol+2]);
 | 
	
		
			
				|  |  | -		data.gdate = pazResult[nCol+3];
 | 
	
		
			
				|  |  | -		data.report_status = pazResult[nCol+4];
 | 
	
		
			
				|  |  | +		data.bid = CharEncoding::UTF82ASCII(pazResult[nCol+1]);
 | 
	
		
			
				|  |  | +		data.sn = CharEncoding::UTF82ASCII(pazResult[nCol+2]);
 | 
	
		
			
				|  |  | +		data.content = CharEncoding::UTF82ASCII(pazResult[nCol+3]);
 | 
	
		
			
				|  |  | +		data.gdate = pazResult[nCol+4];
 | 
	
		
			
				|  |  | +		data.report_date = pazResult[nCol+5];
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -357,11 +352,11 @@ INT CDataImpl::QueryUnReportLogInfo(std::vector<STLog> &vtdata)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	char** pazResult = NULL;
 | 
	
		
			
				|  |  |  	char* psqlite_error = NULL;
 | 
	
		
			
				|  |  | -	std::string strSql = "SELECT type, sn, content, gdate FROM log WHERE report_status in(0,-1)";
 | 
	
		
			
				|  |  | +	std::string strSql = "SELECT type, bid, sn, content, gdate FROM log WHERE report_date = ''";
 | 
	
		
			
				|  |  |  	int sqlite_error = sqlite3_get_table(m_psqlite3, strSql.c_str(), &pazResult, &nRow, &nCol, &psqlite_error);
 | 
	
		
			
				|  |  |  	if ( sqlite_error != SQLITE_OK)
 | 
	
		
			
				|  |  |  	{
 | 
	
		
			
				|  |  | -		//Global::WriteTextLog(_T("QueryContactsInfo:%s"), m_pszErrmsg);
 | 
	
		
			
				|  |  | +		//Global::WriteTextLog(_T("QueryUnReportLogInfo:%s"), psqlite_error);
 | 
	
		
			
				|  |  |  		FREE_MSG;
 | 
	
		
			
				|  |  |  		return -1;
 | 
	
		
			
				|  |  |  	}
 | 
	
	
		
			
				|  | @@ -371,9 +366,43 @@ INT CDataImpl::QueryUnReportLogInfo(std::vector<STLog> &vtdata)
 | 
	
		
			
				|  |  |  	for(int i = 1; i <= nRow; i++, it++)
 | 
	
		
			
				|  |  |  	{
 | 
	
		
			
				|  |  |  		it->type = pazResult[i*nCol+0];
 | 
	
		
			
				|  |  | -		it->sn= pazResult[i*nCol+1];
 | 
	
		
			
				|  |  | -		it->content= pazResult[i*nCol+2];
 | 
	
		
			
				|  |  | -		it->gdate= pazResult[i*nCol+3];
 | 
	
		
			
				|  |  | +		it->bid= pazResult[i*nCol+1];
 | 
	
		
			
				|  |  | +		it->sn= pazResult[i*nCol+2];
 | 
	
		
			
				|  |  | +		it->content= pazResult[i*nCol+3];
 | 
	
		
			
				|  |  | +		it->gdate= pazResult[i*nCol+4];
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	sqlite3_free_table(pazResult);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	return nRow;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +INT CDataImpl::QueryBidInfo(std::string order, BidInfo& binfo)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	if ( m_psqlite3 == NULL )
 | 
	
		
			
				|  |  | +		return -1;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	INT nRow = 0;
 | 
	
		
			
				|  |  | +	INT nCol = 0;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	char** pazResult = NULL;
 | 
	
		
			
				|  |  | +	char* psqlite_error = NULL;
 | 
	
		
			
				|  |  | +	TCHAR szSQL[1024] = {0};
 | 
	
		
			
				|  |  | +	_stprintf_s(szSQL, _SELECT_BID_INFO__, order.c_str());
 | 
	
		
			
				|  |  | +	int sqlite_error = sqlite3_get_table(m_psqlite3, szSQL, &pazResult, &nRow, &nCol, &psqlite_error);
 | 
	
		
			
				|  |  | +	if ( sqlite_error != SQLITE_OK)
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		//Global::WriteTextLog(_T("QueryUnReportLogInfo:%s"), psqlite_error);
 | 
	
		
			
				|  |  | +		FREE_MSG;
 | 
	
		
			
				|  |  | +		return -1;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	if ( nRow == 1 )
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		binfo.tcount = pazResult[nCol+0];
 | 
	
		
			
				|  |  | +		binfo.sn_count = pazResult[nCol+1];
 | 
	
		
			
				|  |  | +		binfo.copy_count = pazResult[nCol+2];
 | 
	
		
			
				|  |  | +		binfo.report_count = pazResult[nCol+3];
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	sqlite3_free_table(pazResult);
 | 
	
	
		
			
				|  | @@ -408,7 +437,7 @@ INT CDataImpl::InsertMidInfo(STMid &data)
 | 
	
		
			
				|  |  |  	int sqlite_error = sqlite3_exec(m_psqlite3, strInsert.c_str(), NULL, 0, &psqlite_error);
 | 
	
		
			
				|  |  |  	if(SQLITE_OK != sqlite_error)
 | 
	
		
			
				|  |  |  	{
 | 
	
		
			
				|  |  | -		//Global::WriteTextLog(_T("InsertContactsType:%s"), psqlite_error);
 | 
	
		
			
				|  |  | +		//Global::WriteTextLog(_T("InsertMidInfo:%s"), psqlite_error);
 | 
	
		
			
				|  |  |  		FREE_MSG;
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -421,7 +450,9 @@ INT CDataImpl::InsertKeyInfo(STKeys &data)
 | 
	
		
			
				|  |  |  	if(m_psqlite3 == NULL)
 | 
	
		
			
				|  |  |  		return -1;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	std::string strInsert = "INSERT INTO keys(pid, sn, keys) VALUES ('";
 | 
	
		
			
				|  |  | +	std::string strInsert = "INSERT INTO keys(bid, pid, sn, keys) VALUES ('";
 | 
	
		
			
				|  |  | +	strInsert.append(data.bid);
 | 
	
		
			
				|  |  | +	strInsert.append("','");
 | 
	
		
			
				|  |  |  	strInsert.append(data.pid);
 | 
	
		
			
				|  |  |  	strInsert.append("','");
 | 
	
		
			
				|  |  |  	strInsert.append(data.sn);
 | 
	
	
		
			
				|  | @@ -432,7 +463,7 @@ INT CDataImpl::InsertKeyInfo(STKeys &data)
 | 
	
		
			
				|  |  |  	int sqlite_error = sqlite3_exec(m_psqlite3, strInsert.c_str(), NULL, 0, &psqlite_error);
 | 
	
		
			
				|  |  |  	if(SQLITE_OK != sqlite_error)
 | 
	
		
			
				|  |  |  	{
 | 
	
		
			
				|  |  | -		//Global::WriteTextLog(_T("InsertContactsInfo:%s"), psqlite_error);
 | 
	
		
			
				|  |  | +		//Global::WriteTextLog(_T("InsertKeyInfo:%s"), psqlite_error);
 | 
	
		
			
				|  |  |  		FREE_MSG;
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -444,22 +475,22 @@ INT CDataImpl::InsertLogInfo(STLog &data)
 | 
	
		
			
				|  |  |  	if(m_psqlite3 == NULL)
 | 
	
		
			
				|  |  |  		return -1;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	std::string strInsert = "INSERT INTO log(type, sn, content, report_date, report_status) VALUES ('";
 | 
	
		
			
				|  |  | +	std::string strInsert = "INSERT INTO log(type, bid, sn, content, report_date) VALUES ('";
 | 
	
		
			
				|  |  |  	strInsert.append(data.type);
 | 
	
		
			
				|  |  |  	strInsert.append("','");
 | 
	
		
			
				|  |  | +	strInsert.append(data.bid);
 | 
	
		
			
				|  |  | +	strInsert.append("','");
 | 
	
		
			
				|  |  |  	strInsert.append(data.sn);
 | 
	
		
			
				|  |  |  	strInsert.append("','");
 | 
	
		
			
				|  |  |  	strInsert.append(data.content);
 | 
	
		
			
				|  |  |  	strInsert.append("','");
 | 
	
		
			
				|  |  |  	strInsert.append(data.report_date);
 | 
	
		
			
				|  |  | -	strInsert.append("','");
 | 
	
		
			
				|  |  | -	strInsert.append(data.report_status);
 | 
	
		
			
				|  |  |  	strInsert.append("');");
 | 
	
		
			
				|  |  |  	char* psqlite_error = NULL;
 | 
	
		
			
				|  |  |  	int sqlite_error = sqlite3_exec(m_psqlite3, strInsert.c_str(), NULL, 0, &psqlite_error);
 | 
	
		
			
				|  |  |  	if(SQLITE_OK != sqlite_error)
 | 
	
		
			
				|  |  |  	{
 | 
	
		
			
				|  |  | -		//Global::WriteTextLog(_T("InsertContactsInfo:%s"), psqlite_error);
 | 
	
		
			
				|  |  | +		//Global::WriteTextLog(_T("InsertLogInfo:%s"), psqlite_error);
 | 
	
		
			
				|  |  |  		FREE_MSG;
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -480,16 +511,17 @@ INT CDataImpl::BatchInsertKeyInfo(std::vector<STKeys> &vtdata)
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	sqlite3_stmt *stmt;
 | 
	
		
			
				|  |  | -	const char* sql = "INSERT INTO keys(pid, sn, keys) VALUES (?,?,?)";
 | 
	
		
			
				|  |  | +	const char* sql = "INSERT INTO keys(bid, pid, sn, keys) VALUES (?,?,?,?)";
 | 
	
		
			
				|  |  |  	sqlite3_prepare_v2(m_psqlite3, sql, strlen(sql), &stmt, 0);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	std::vector<STKeys>::iterator it = vtdata.begin();
 | 
	
		
			
				|  |  |  	for ( int i = 0; it != vtdata.end(); it++, i++ )
 | 
	
		
			
				|  |  |  	{
 | 
	
		
			
				|  |  |  		sqlite3_reset(stmt);  
 | 
	
		
			
				|  |  | -		sqlite3_bind_text(stmt, 1, it->pid.c_str(), it->pid.size(), SQLITE_STATIC);  
 | 
	
		
			
				|  |  | -		sqlite3_bind_text(stmt, 2, it->sn.c_str(), it->sn.size(), SQLITE_STATIC);  
 | 
	
		
			
				|  |  | -		sqlite3_bind_text(stmt, 3, it->keys.c_str(), it->keys.size(), SQLITE_STATIC);   
 | 
	
		
			
				|  |  | +		sqlite3_bind_text(stmt, 1, it->bid.c_str(), it->bid.size(), SQLITE_STATIC);  
 | 
	
		
			
				|  |  | +		sqlite3_bind_text(stmt, 2, it->pid.c_str(), it->pid.size(), SQLITE_STATIC);  
 | 
	
		
			
				|  |  | +		sqlite3_bind_text(stmt, 3, it->sn.c_str(), it->sn.size(), SQLITE_STATIC);  
 | 
	
		
			
				|  |  | +		sqlite3_bind_text(stmt, 4, it->keys.c_str(), it->keys.size(), SQLITE_STATIC);   
 | 
	
		
			
				|  |  |  		sqlite3_step(stmt);  
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -540,7 +572,7 @@ BOOL CDataImpl::UpdateMidInfo(STMid &data)
 | 
	
		
			
				|  |  |  	int sqlite_error = sqlite3_exec(m_psqlite3, strInsert.c_str(), NULL, 0, &psqlite_error);
 | 
	
		
			
				|  |  |  	if(SQLITE_OK != sqlite_error)
 | 
	
		
			
				|  |  |  	{
 | 
	
		
			
				|  |  | -		//Global::WriteTextLog(_T("UpdateContactsType:%s"), psqlite_error);
 | 
	
		
			
				|  |  | +		//Global::WriteTextLog(_T("UpdateMidInfo:%s"), psqlite_error);
 | 
	
		
			
				|  |  |  		FREE_MSG;
 | 
	
		
			
				|  |  |  		return FALSE;
 | 
	
		
			
				|  |  |  	}
 | 
	
	
		
			
				|  | @@ -576,7 +608,7 @@ BOOL CDataImpl::UpdateDownloadStatus(std::string order, int status, std::string
 | 
	
		
			
				|  |  |  	int sqlite_error = sqlite3_exec(m_psqlite3, strInsert.c_str(), NULL, 0, &psqlite_error);
 | 
	
		
			
				|  |  |  	if(SQLITE_OK != sqlite_error)
 | 
	
		
			
				|  |  |  	{
 | 
	
		
			
				|  |  | -		//Global::WriteTextLog(_T("UpdateContactsType:%s"), psqlite_error);
 | 
	
		
			
				|  |  | +		//Global::WriteTextLog(_T("UpdateDownloadStatus:%s"), psqlite_error);
 | 
	
		
			
				|  |  |  		FREE_MSG;
 | 
	
		
			
				|  |  |  		return FALSE;
 | 
	
		
			
				|  |  |  	}
 | 
	
	
		
			
				|  | @@ -584,20 +616,13 @@ BOOL CDataImpl::UpdateDownloadStatus(std::string order, int status, std::string
 | 
	
		
			
				|  |  |  	return TRUE;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -BOOL CDataImpl::UpdateKeyCopyStatus(std::string sn, int status)
 | 
	
		
			
				|  |  | +// 抄写成功状态;
 | 
	
		
			
				|  |  | +BOOL CDataImpl::UpdateKeyCopyStatus(std::string sn)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |  	if(m_psqlite3 == NULL)
 | 
	
		
			
				|  |  |  		return FALSE;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	// 只记录抄写成功;
 | 
	
		
			
				|  |  | -	if ( status != 1)
 | 
	
		
			
				|  |  | -		return FALSE;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	char szStatus[10] = {0};
 | 
	
		
			
				|  |  | -	_itoa_s(status, szStatus, 10);
 | 
	
		
			
				|  |  | -	std::string strInsert = "UPDATE keys SET copy_status = '";
 | 
	
		
			
				|  |  | -	strInsert.append(szStatus);
 | 
	
		
			
				|  |  | -	strInsert.append("', copy_date=current_timestamp");
 | 
	
		
			
				|  |  | +	std::string strInsert = "UPDATE keys SET copy_date=current_timestamp";
 | 
	
		
			
				|  |  |  	strInsert.append(" WHERE sn ='");
 | 
	
		
			
				|  |  |  	strInsert.append(sn);
 | 
	
		
			
				|  |  |  	strInsert.append("';");
 | 
	
	
		
			
				|  | @@ -606,7 +631,7 @@ BOOL CDataImpl::UpdateKeyCopyStatus(std::string sn, int status)
 | 
	
		
			
				|  |  |  	int sqlite_error = sqlite3_exec(m_psqlite3, strInsert.c_str(), NULL, 0, &psqlite_error);
 | 
	
		
			
				|  |  |  	if(SQLITE_OK != sqlite_error)
 | 
	
		
			
				|  |  |  	{
 | 
	
		
			
				|  |  | -		//Global::WriteTextLog(_T("UpdateContactsInfo:%s"), psqlite_error);
 | 
	
		
			
				|  |  | +		//Global::WriteTextLog(_T("UpdateKeyCopyStatus:%s"), psqlite_error);
 | 
	
		
			
				|  |  |  		FREE_MSG;
 | 
	
		
			
				|  |  |  		return FALSE;
 | 
	
		
			
				|  |  |  	}
 | 
	
	
		
			
				|  | @@ -614,20 +639,12 @@ BOOL CDataImpl::UpdateKeyCopyStatus(std::string sn, int status)
 | 
	
		
			
				|  |  |  	return TRUE;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -BOOL CDataImpl::UpdateKeyReportStatus(std::string sn, int status)
 | 
	
		
			
				|  |  | +BOOL CDataImpl::UpdateKeyReportStatus(std::string sn)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |  	if(m_psqlite3 == NULL)
 | 
	
		
			
				|  |  |  		return FALSE;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	// 只记录抄写成功;
 | 
	
		
			
				|  |  | -	if ( status != 1)
 | 
	
		
			
				|  |  | -		return FALSE;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	char szStatus[10] = {0};
 | 
	
		
			
				|  |  | -	_itoa_s(status, szStatus, 10);
 | 
	
		
			
				|  |  | -	std::string strInsert = "UPDATE keys SET report_status = '";
 | 
	
		
			
				|  |  | -	strInsert.append(szStatus);
 | 
	
		
			
				|  |  | -	strInsert.append("', report_date=current_timestamp");
 | 
	
		
			
				|  |  | +	std::string strInsert = "UPDATE keys SET report_date=current_timestamp";
 | 
	
		
			
				|  |  |  	strInsert.append(" WHERE sn ='");
 | 
	
		
			
				|  |  |  	strInsert.append(sn);
 | 
	
		
			
				|  |  |  	strInsert.append("' and copy_date <> '';");
 | 
	
	
		
			
				|  | @@ -636,7 +653,7 @@ BOOL CDataImpl::UpdateKeyReportStatus(std::string sn, int status)
 | 
	
		
			
				|  |  |  	int sqlite_error = sqlite3_exec(m_psqlite3, strInsert.c_str(), NULL, 0, &psqlite_error);
 | 
	
		
			
				|  |  |  	if(SQLITE_OK != sqlite_error)
 | 
	
		
			
				|  |  |  	{
 | 
	
		
			
				|  |  | -		//Global::WriteTextLog(_T("UpdateContactsInfo:%s"), psqlite_error);
 | 
	
		
			
				|  |  | +		//Global::WriteTextLog(_T("UpdateKeyReportStatus:%s"), psqlite_error);
 | 
	
		
			
				|  |  |  		FREE_MSG;
 | 
	
		
			
				|  |  |  		return FALSE;
 | 
	
		
			
				|  |  |  	}
 | 
	
	
		
			
				|  | @@ -644,20 +661,12 @@ BOOL CDataImpl::UpdateKeyReportStatus(std::string sn, int status)
 | 
	
		
			
				|  |  |  	return TRUE;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -BOOL CDataImpl::UpdateLogReportStatus(std::string sn, std::string type, int status)
 | 
	
		
			
				|  |  | +BOOL CDataImpl::UpdateLogReportStatus(std::string sn, std::string type)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |  	if(m_psqlite3 == NULL)
 | 
	
		
			
				|  |  |  		return FALSE;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	// 只记录抄写成功;
 | 
	
		
			
				|  |  | -	if ( status != 1)
 | 
	
		
			
				|  |  | -		return FALSE;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	char szStatus[10] = {0};
 | 
	
		
			
				|  |  | -	_itoa_s(status, szStatus, 10);
 | 
	
		
			
				|  |  | -	std::string strInsert = "UPDATE log SET report_status = '";
 | 
	
		
			
				|  |  | -	strInsert.append(szStatus);
 | 
	
		
			
				|  |  | -	strInsert.append("', report_date=current_timestamp");
 | 
	
		
			
				|  |  | +	std::string strInsert = "UPDATE log SET report_date=current_timestamp";
 | 
	
		
			
				|  |  |  	strInsert.append(" WHERE sn ='");
 | 
	
		
			
				|  |  |  	strInsert.append(sn);
 | 
	
		
			
				|  |  |  	strInsert.append("' and type ='");
 | 
	
	
		
			
				|  | @@ -668,7 +677,26 @@ BOOL CDataImpl::UpdateLogReportStatus(std::string sn, std::string type, int stat
 | 
	
		
			
				|  |  |  	int sqlite_error = sqlite3_exec(m_psqlite3, strInsert.c_str(), NULL, 0, &psqlite_error);
 | 
	
		
			
				|  |  |  	if(SQLITE_OK != sqlite_error)
 | 
	
		
			
				|  |  |  	{
 | 
	
		
			
				|  |  | -		//Global::WriteTextLog(_T("UpdateContactsInfo:%s"), psqlite_error);
 | 
	
		
			
				|  |  | +		//Global::WriteTextLog(_T("UpdateLogReportStatus:%s"), psqlite_error);
 | 
	
		
			
				|  |  | +		FREE_MSG;
 | 
	
		
			
				|  |  | +		return FALSE;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	return TRUE;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +BOOL CDataImpl::RemoveBidData(std::string order)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	if(m_psqlite3 == NULL)
 | 
	
		
			
				|  |  | +		return FALSE;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	TCHAR szSQL[1024] = {0};
 | 
	
		
			
				|  |  | +	_stprintf_s(szSQL, "delete from mid where bid = '%s'; delete from keys where bid = '%s'; delete from log where bid = '%s'", order.c_str(), order.c_str(), order.c_str());
 | 
	
		
			
				|  |  | +	char* psqlite_error = NULL;
 | 
	
		
			
				|  |  | +	int sqlite_error = sqlite3_exec(m_psqlite3, szSQL, NULL, 0, &psqlite_error);
 | 
	
		
			
				|  |  | +	if(SQLITE_OK != sqlite_error)
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		//Global::WriteTextLog(_T("UpdateLogReportStatus:%s"), psqlite_error);
 | 
	
		
			
				|  |  |  		FREE_MSG;
 | 
	
		
			
				|  |  |  		return FALSE;
 | 
	
		
			
				|  |  |  	}
 |