Przeglądaj źródła

新增3个接口
BatchReportKeyCopyResults:批量上报未上报的sn抄写结果 ;
QueryBidInfo:查询批次的各数量信息:应下载sn数量、实际下载sn数量、成功抄写sn数量、成功上报sn数量;
RemoveBidData:完成批次抄写后,调用该函数删除批次相关的表数据;

Jeff 5 lat temu
rodzic
commit
063edf5a18

+ 10 - 1
scbc.tools/scbc.tools/DataImpl.cpp

@@ -277,7 +277,7 @@ 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_date = ''";
+	std::string strSql = "SELECT sn,copy_date FROM keys WHERE copy_date <> '' and report_date = '' LIMIT 0,1000";
 	int sqlite_error = sqlite3_get_table(m_psqlite3, strSql.c_str(), &pazResult, &nRow, &nCol, &psqlite_error);
 	if ( sqlite_error != SQLITE_OK)
 	{
@@ -690,6 +690,9 @@ BOOL CDataImpl::RemoveBidData(std::string order)
 	if(m_psqlite3 == NULL)
 		return FALSE;
 
+	if ( TransactionBegin() != 0 )
+		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;
@@ -698,8 +701,14 @@ BOOL CDataImpl::RemoveBidData(std::string order)
 	{
 		//Global::WriteTextLog(_T("UpdateLogReportStatus:%s"), psqlite_error);
 		FREE_MSG;
+		// »Ø¹öÊÂÎñ;
+		sqlite3_exec(m_psqlite3, "rollback;", 0, 0, &psqlite_error);
+		FREE_MSG;
 		return FALSE;
 	}
 
+	if ( TransactionCommit() != 0 )
+		return FALSE;
+
 	return TRUE;
 }

+ 3 - 2
scbc.tools/scbc.tools/TableInfo.h

@@ -98,10 +98,11 @@ typedef struct __SN_KEYS__
 	std::string		cikey;							// cikey;
 }SNKeys, *pSNKeys;
 
+// 批次数量信息;
 typedef struct __BID_INFO__
 {
-	std::string tcount;								// 总sn数量;
-	std::string sn_count;							// 实际sn数量;
+	std::string tcount;								// 总sn数量(服务器给定的,一般总sn数量=实际sn数量);
+	std::string sn_count;							// 实际sn数量(本地保存的);
 	std::string copy_count;							// 成功抄写数量;
 	std::string report_count;						// 成功上报数量;
 }BidInfo, *pBidInfo;

+ 13 - 1
scbc.tools/scbc.tools/scbc.tools.cpp

@@ -342,6 +342,18 @@ int QueryBidInfo(const char* lpOrder, BidInfo& binfo)
 
 int RemoveBidData(const char* lpOrder)
 {
-	return 0;
+	if ( lpOrder == NULL || lpOrder[0] == '\0' )
+		return -1;
+
+	CDataImpl db;
+	if ( db.Open() )
+	{
+		if( db.RemoveBidData(lpOrder) == FALSE)
+			return 0;
+		
+		return 1;
+	}
+
+	return -2;
 }
 #endif

+ 24 - 13
scbc.tools/scbc.tools/scbc.tools.h

@@ -12,13 +12,13 @@
 
 #include "TableInfo.h"
 
-/*
+/* 1
 描述:查询指定批次MID信息。
 	一般用于DownloadMidData调用后,查询是否下载成功;或者下载前,查询该批次是否已经在下载中;
 参数:lpOrder 批次号;
 返回:
 	0=表示该批次未下载过,不存在数据库中;
-	1=表示该批次下载中
+	1=表示该批次已存在,但未下载完成,请调用DownloadMidData完成下载
 	2=表示该批次已完成下载;
 	3=表示该批次下载失败(再次调用DownloadMidData可断点下载);
 	-1=表示lpOrder参数空;
@@ -28,7 +28,7 @@
 */
 extern SCBCTOOLS_API int QueryMidInfo(const char* lpOrder);
 
-/*
+/* 2
 描述:下载指定批次MID数据;(后台线程下载),调用QueryMidInfo查询是否下载完成;
 参数:lpOrder 批次号;
 返回:
@@ -43,7 +43,7 @@ extern SCBCTOOLS_API int QueryMidInfo(const char* lpOrder);
 */
 extern SCBCTOOLS_API int DownloadMidData(const char* lpOrder);
 
-/*
+/* 3
 描述:查询SN对应的Keys;
 参数:
 	lpSN 条码;
@@ -59,7 +59,7 @@ extern SCBCTOOLS_API int DownloadMidData(const char* lpOrder);
 */
 extern SCBCTOOLS_API int QueryKeyInfo(const char* lpSN, SNKeys &snKeys);
 
-/*
+/* 4
 描述:更新抄写状态;(在抄写key成功后调用该接口)
 参数:lpSN 条码;
 返回:
@@ -70,7 +70,7 @@ extern SCBCTOOLS_API int QueryKeyInfo(const char* lpSN, SNKeys &snKeys);
 */
 extern SCBCTOOLS_API int UpdateKeyCopyStatus(const char* lpSN);
 
-/*
+/* 5
 描述:更新上报状态;(的UpdateKeyCopyStatus成功后调用)
 参数:lpSN 条码;
 返回:
@@ -81,9 +81,9 @@ extern SCBCTOOLS_API int UpdateKeyCopyStatus(const char* lpSN);
 */
 extern SCBCTOOLS_API int UpdateKeyReportStatus(const char* lpSN);
 
-/*
+/* 6
 描述:上报抄写结果;
-参数:lpSN 条码; lpSN = NULL时,上报所有抄写成功且未上报的抄写结果;
+参数:lpSN 条码;
 返回:
 	0=表示上报抄写结果失败
 	1=表示上报抄写结果成功;
@@ -91,7 +91,17 @@ extern SCBCTOOLS_API int UpdateKeyReportStatus(const char* lpSN);
 */
 extern SCBCTOOLS_API int ReportKeyCopyResults(const char* lpSN);
 
-/*
+/* 7
+描述:上报抄写结果;
+参数:ReportCount 从数据库中查询未上报的sn数量,建议不要超过500;
+返回:
+	0=表示上报抄写结果失败
+	1=表示上报抄写结果成功;
+	上报成功后,会自动更新上报状态;
+*/
+extern SCBCTOOLS_API int BatchReportKeyCopyResults(int ReportCount = 100);
+
+/* 8
 描述:查询批次信息:总sn数、实际sn数、抄写成功数量、上报成功数量;
 参数:lpOrder 批次号; binfo 返回的bid信息;
 返回:
@@ -104,12 +114,13 @@ extern SCBCTOOLS_API int ReportKeyCopyResults(const char* lpSN);
 */
 extern SCBCTOOLS_API int QueryBidInfo(const char* lpOrder, BidInfo& binfo);
 
-/*
+/* 9
 描述:删除批次相关的所有表数量;
 参数:lpOrder 批次号;
 返回:
-	0=表示上报抄写结果失败
-	1=表示上报抄写结果成功;
-	上报成功后,需调用UpdateKeyReportStatus更新上报状态;
+	0=表示删除失败;
+	1=表示删除成功;
+	-1=表示lpOrder参数空;
+	-2=表示打开数据库失败;
 */
 extern SCBCTOOLS_API int RemoveBidData(const char* lpOrder);

+ 4 - 1
scbc.tools/test/test.cpp

@@ -30,7 +30,10 @@ int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
 	{
 		// TODO: 在此处为应用程序的行为编写代码。
 		int nRet = QueryMidInfo("10");
-		printf("查询结果:%d\n", nRet);
+		printf("QueryMidInfo:%d\n", nRet);
+
+		nRet = RemoveBidData("1");
+		printf("RemoveBidData:%d\n", nRet);
 	}
 
 	system("pause");