#pragma once #include "basic_struct.h" #include #include #include "../Schema/schema_struct.h" using namespace std; #ifdef SMARTEVALUATIONLOGIC_EXPORTS #define SMARTEVALUATIONLOGIC_API __declspec(dllexport) #else #define SMARTEVALUATIONLOGIC_API __declspec(dllimport) #endif //设置cookie SMARTEVALUATIONLOGIC_API int SetCookie(std::string path, std::string name , std::string value); //设置本地服务器的cookie SMARTEVALUATIONLOGIC_API int SetLocalServerCookie( std::string name , std::string value); //设置远端服务器地址 SMARTEVALUATIONLOGIC_API int SetServerUrl(std::string server_url); SMARTEVALUATIONLOGIC_API int SetScanConfig(std::string app_data_dir, std::string scan_data_dir); SMARTEVALUATIONLOGIC_API int InitalizeScan(bool bOnlineCard, int subjectid, int nOnlineScanType); /*======================================================================*/ /*=============================试卷图片上传相关=========================*/ /*======================================================================*/ /************************************************************************/ /* 设置试卷图像上传消息返回窗口句柄 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int SetHandlerWndForImg( HWND hwnd ); /************************************************************************/ /* 开始试卷图像上传 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int StartUploadePaperImg(); /************************************************************************/ /* 停止试卷图像上传 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int StopUploadePaperImg(); /************************************************************************/ /* 查询试卷图像上传任务 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int QueryUploadePaperImg(vector& tasks); /************************************************************************/ /* 查询当前试卷图像上传任务 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int GetCurrentUploadTaskInfo(IMG_UPLOAD_TASK& task); /************************************************************************/ /* 清空已上传完成的数据 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int ClearUploadedPaperImg(); /*======================================================================*/ /*=============================扫描仪控制相关===========================*/ /*======================================================================*/ /************************************************************************/ /* 获取扫描仪列表 (返回获取到信息的条数) */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int GetScannerList(vector & scannerList); /************************************************************************/ /* 获取默认扫描仪信息(成功返回1 失败返回0) */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int GetDefaultScannerInfo(SCANNER_INFO &scannerInfo); /************************************************************************/ /* 选择/改变选中的扫描仪(成功返回1 失败返回0) */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int ConnectScanner(const int nIndex); /************************************************************************/ /* 显示扫描仪设置 (成功返回1 失败返回0) */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int ShowScannerSetting(const unsigned int nId); /************************************************************************/ /* 断开连接选中的扫描仪 (成功返回1 失败返回0) */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int DisconnectScanner(); /*======================================================================*/ /*=============================识别流程控制相关=========================*/ /*======================================================================*/ /************************************************************************/ /* 注册窗口,识别模块遇到问题将向该窗口发送消息 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int SetHandlerWnd(HWND hwnd); SMARTEVALUATIONLOGIC_API string GetBatchCode(); /************************************************************************/ /* 加载模板 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int LoadSchema(long long examId, std::string examName, long examCourseId, std::string courseName, const std::string schemaPath, std::string rule = ""); /************************************************************************/ /* 准备扫描 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int ReadyScanEX(FEEDER_TYPE feederType,const ScanParam & param); /************************************************************************/ /*设置从文件夹扫描的路径(继续扫描时使用) */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int SetFolderScanDir(const std::string img_dir); /************************************************************************/ /*获取扫描状态 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int GetServiceSate(); /************************************************************************/ /*开始扫描 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int Start(); /************************************************************************/ /* 暂停扫描 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int Pause(); /************************************************************************/ /* 继续扫描 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int Resume(); /************************************************************************/ /* 停止扫描 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int Stop(); /************************************************************************/ /* 清除临时扫描数据 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int ClearDbTemp(); /************************************************************************/ /* 放弃本次扫描结果 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int GiveUpCurrentBatch(); /************************************************************************/ /* 扫描完成离开本次扫描调用 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int leaveCurrentBatch(); /************************************************************************/ /* 开始试卷成绩上传 (参数,接收进度消息的句柄) */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int StartUploadPaper(HWND hWnd); /*======================================================================*/ /*=============================异常处理相关=============================*/ /*======================================================================*/ /************************************************************************/ /* 重新识别试卷 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int ReIdentify(const int paper_id, const std::string& stu_code, std::vector params); /************************************************************************/ /* 查询模板图像路径 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int QueryMubanImgPath(int page_index,std::string& imgPath); /************************************************************************/ /* 查询模板图像数量 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int QueryMubanImgCount(int& page_count); /************************************************************************/ /* 查询异常试卷总数 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int QueryExptionPaperCount(int & exc_count, int & total_count); /************************************************************************/ /* 查询异常类型信息 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int QueryExptionTypeInfo(vector & infos); /************************************************************************/ /* 加载试卷异常列表 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int QueryExceptionPaper(const long exception_type, vector &studengList); /************************************************************************/ /* 加载正常试卷列表 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int QueryNormalPaper(vector &studengList); /************************************************************************/ /* 加载异常试卷详情 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int QueryPaperDetail(const int paper_id,PAPER_DETAIL &paper_detail,vector &pageList,vector &questionList); /************************************************************************/ /* 更新试卷考生 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int UpdatePaperStudent( const int paper_id,const std::string examinee_id ,const std::string student_code,const std::string studentName,const long schoolId,const std::string stuCode = "",const std::string stuSchoolCode = "",const std::string className = "",const std::string gradeName = "",bool bReIdentify=false); /************************************************************************/ /* 忽略试卷 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int IgnorePaper(const int paper_id); /************************************************************************/ /* 忽略试卷 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int IgnoreException(const long exceptions); /************************************************************************/ /* 覆盖试卷 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int ReplacePaper(const int paper_id,int &paper_id_ret); /************************************************************************/ /* 全部覆盖试卷 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int ReplaceAllKaoHaoChongTu(vector &paper_id_List); /************************************************************************/ /* 智能识别 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int AiReadImgPaper(const int subject, const int id, std::vector aiVec, const std::vector imgPath, vector> &retList); /************************************************************************/ /* 设置扫描督学卡 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int SetScanInspector(int ntype, std::string strShoolID); /************************************************************************/ /* 下载图片 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int DownLoadImg(HWND hWnd, std::string strExamId, int type); /************************************************************************/ /* 下载模板 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int HttpDownloadTemplate(std::string from, std::string fileName); /************************************************************************/ /* 取消下次继续扫描结果状态 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int CloseContineScan(); /************************************************************************/ /* 开启下次继续扫描结果状态 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int StartContiuneScan(); /************************************************************************/ /* 从云端下载异常试卷 */ /************************************************************************/ enum MsgType { LOAD_ERROR_LIST_BEGIN, LOAD_ERROR_LIST, // 获取异常列表 LOAD_ERROR_LIST_END, LOAD_ERROR_FAILED, LOAD_ERROR_EXAM_NAME, LOAD_PAPER_TYPE, LOAD_CLOUD_FILE_BEGIN, LOAD_CLOUD_FILE, // 获取云文件 LOAD_CLOUD_FILE_END, }; SMARTEVALUATIONLOGIC_API bool ExitCloud(); SMARTEVALUATIONLOGIC_API bool InitCloud(const char*path); struct ISmartLogicNotify{ virtual void OnNotify(MsgType type, const char*msg) = 0; }; SMARTEVALUATIONLOGIC_API int PreErrorHandleRestoreSite(bool bcontinue,int scan_type, const ScanParam&scanparam); SMARTEVALUATIONLOGIC_API int ParseErrorPaperFromCloud(const std::string&strUrl, const std::string&session, const std::string&exam_id, const std::string&destDir, ISmartLogicNotify*pNotify = NULL); SMARTEVALUATIONLOGIC_API void exit_thread_error_handle_restore_site(); SMARTEVALUATIONLOGIC_API void SetErrorHandle(bool bErrorHandle); /*======================================================================*/ /*=============================识别小工具=============================*/ /*======================================================================*/ /************************************************************************/ /* 检测试卷上指定区域的交叉点 */ /************************************************************************/ struct _IplImage; typedef struct _IplImage IplImage; SMARTEVALUATIONLOGIC_API int DetectCross(const IplImage * img, int detect_x, int detect_y, int detect_w, int detect_h,std::vector& crosss ); SMARTEVALUATIONLOGIC_API void getCurScanExam(std::string exam_code, std::vector> &stuInfo); SMARTEVALUATIONLOGIC_API void getCoverStuInfoByExamCode(std::string examCode, std::vector &stuInfo); SMARTEVALUATIONLOGIC_API void writeToexcel(std::string path, std::vector> &stuInfo, std::vector &stuInfo2,bool flag1,bool flag2,bool flag3); /*模板测试工具类*/ class CLocateTester; class SMARTEVALUATIONLOGIC_API CLocateTestExport { public: CLocateTestExport(void); ~CLocateTestExport(void); bool isReady(); bool isSameSchema(const schema::SCHEMA& schema); bool test(const schema::SCHEMA& schema,const std::vector& img_paths); bool isResultOk(); bool getTestResult(std::string &error_msg); private: CLocateTester * tester; }; SMARTEVALUATIONLOGIC_API int InitIdentiferDllAlgorithm(); SMARTEVALUATIONLOGIC_API void FreeIdentiferDllAlgorithm(); struct IUploudNotify; SMARTEVALUATIONLOGIC_API void InitUploadManager(bool bEanble, bool bCountiue, bool bErrorHanle, bool bOnlineCard, IUploudNotify*pNotify); SMARTEVALUATIONLOGIC_API void OnScanListFilter(bool bsuccess,int nUploadState); SMARTEVALUATIONLOGIC_API int UploadOnScanCmd(int nCmd, const char*param ,void*ret=nullptr); SMARTEVALUATIONLOGIC_API void QuickHandle(bool bGetPath, char*path_nor, int nor_len, char*path_exc, int exc_len); SMARTEVALUATIONLOGIC_API int BatchServiceCmd(int cmd, void*param, void*ret); SMARTEVALUATIONLOGIC_API void SetExamName(const wchar_t * name); SMARTEVALUATIONLOGIC_API vector GetAllConfictPaper(int student_paper_id,string student_id); /************************************************************************/ /* 校验考号冲突是否是本次扫描(是1 否0) */ /* 返回值:是1 否0 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int ExamineThisScan(PAPER_DETAIL &paper_detail); /************************************************************************/ /* 设置试卷为缺考 */ /* 参数:absent: 1 非缺考 2 确认缺考 3 标记缺考 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int SetAbsentExam(PAPER_DETAIL &paper_detail, int absent); /************************************************************************/ /* 查询有异常的客观题 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int QueryKeGuanTiYiChang(const int paper_id, std::vector& keguantiList); /************************************************************************/ /* 更新异常客观题 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API int UpdateKeGuanTiYiChang(const int paper_id, std::vector& keguantiList); /************************************************************************/ /* 设置是否全学科在线 */ /************************************************************************/ SMARTEVALUATIONLOGIC_API void SetAllSubject(bool all=true);