// 下列 ifdef 块是创建使从 DLL 导出更简单的
// 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 SCBCTOOLS_EXPORTS
// 符号编译的。在使用此 DLL 的
// 任何其他项目上不应定义此符号。这样，源文件中包含此文件的任何其他项目都会将
// SCBCTOOLS_API 函数视为是从 DLL 导入的，而此 DLL 则将用此宏定义的
// 符号视为是被导出的。
#ifdef SCBCTOOLS_EXPORTS
#define SCBCTOOLS_API __declspec(dllexport)
#else
#define SCBCTOOLS_API __declspec(dllimport)
#endif

#include "TableInfo.h"

/* 1
描述：查询指定批次MID信息。
	一般用于DownloadMidData调用后，查询是否下载成功；或者下载前，查询该批次是否已经在下载中;
参数：lpOrder 批次号;
返回：
	0=表示该批次未下载过，不存在数据库中；
	1=表示该批次已存在，但未下载完成，请调用DownloadMidData完成下载；
	2=表示该批次已完成下载；
	3=表示该批次下载失败（再次调用DownloadMidData可断点下载）;
	-1=表示lpOrder参数空;
	-2=表示打开db失败;
	-3=表示查询批次出错;
	-4=表示数据异常;
*/
extern SCBCTOOLS_API int QueryMidInfo(const char* lpOrder);

/* 2
描述：下载指定批次MID数据;（后台线程下载），调用QueryMidInfo查询是否下载完成;
参数：lpOrder 批次号;
返回：
	0=表示该批次不存在云服务器（批次信息未导入）；
	1=表示该批次在云服务器中存在，下载任务后台启动中；
	2=表示该批次已完成下载；
	-1=表示lpOrder参数空;
	-2=表示打开db失败;
	-3=表示查询批次出错;
	-4=表示数据异常;
	-5=表示https网络请求失败;
*/
extern SCBCTOOLS_API int DownloadMidData(const char* lpOrder);

/* 3
描述：查询SN对应的Keys;
参数：
	lpSN 条码;
	lpKeys 返回的字符串,json数组格式;
	len lpkeys缓存区长度;
返回：
	0=表示没有该sn，不存在数据库中;
	1=表示获取sn绑定的keys成功;
	-1=表示lpSN参数空;
	-2=表示打开数据库失败;
	-3=表示查询SN出错;
	-4=表示数据异常;
*/
extern SCBCTOOLS_API int QueryKeyInfo(const char* lpSN, SNKeys &snKeys);

/* 4
描述：更新抄写状态;（在抄写key成功后调用该接口）
参数：lpSN 条码;
返回：
	0=表示更新sn的抄写状态失败;
	1=表示更新sn的抄写状态成功;
	-1=表示lpSN参数空;
	-2=表示打开数据库失败;
*/
extern SCBCTOOLS_API int UpdateKeyCopyStatus(const char* lpSN);

/* 5
描述：更新上报状态;（的UpdateKeyCopyStatus成功后调用）
参数：lpSN 条码;
返回：
	0=表示更新sn的上报状态失败;
	1=表示更新sn的上报状态成功;
	-1=表示lpSN参数空;
	-2=表示打开数据库失败;
*/
extern SCBCTOOLS_API int UpdateKeyReportStatus(const char* lpSN);

/* 6
描述：上报抄写结果;
参数：lpSN 条码;
返回：
	0=表示上报抄写结果失败
	1=表示上报抄写结果成功;
	上报成功后，需调用UpdateKeyReportStatus更新上报状态;
*/
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信息;
返回：
	0=表示订单不存在数据库中;
	1=表示获取bid信息成功;
	-1=表示lpOrder参数空;
	-2=表示打开数据库失败;
	-3=表示查询订单出错;
	-4=表示数据异常;
*/
extern SCBCTOOLS_API int QueryBidInfo(const char* lpOrder, BidInfo& binfo);

/* 9
描述：删除批次相关的所有表数量;
参数：lpOrder 批次号;
返回：
	0=表示删除失败;
	1=表示删除成功;
	-1=表示lpOrder参数空;
	-2=表示打开数据库失败;
*/
extern SCBCTOOLS_API int RemoveBidData(const char* lpOrder);