#pragma once #include #include #include "identifydll_global.h" #include "basic_struct.h" using namespace std; class CBatchManager; class CSmartEvaluationService; class CBatchService; struct IUploudNotify; class SMARTEVALUATIONLOGIC_API CBatch { friend class CBatchManager; template friend class boost::shared_ptr; template friend inline void boost::checked_delete(T *); private: CBatch(bool bOnlineCard, int nSubjectID, int nOnlineScanType); ~CBatch(); public: void leaveCurrentBatch(); int SetHandlerWnd(HWND hwnd); int OnBnClickedButtonStartScan(); /************************************************************************/ /* 加载模板 */ /************************************************************************/ string GetBatchCode(); int LoadSchema(long long examId, std::string examName, long examCourseId, std::string courseName, const std::string schemaPath, std::string rule = ""); /************************************************************************/ /* 准备扫描 */ /************************************************************************/ int ReadyScanEX(FEEDER_TYPE feederType, const ScanParam & param); /************************************************************************/ /*设置从文件夹扫描的路径(继续扫描时使用) */ /************************************************************************/ int SetFolderScanDir(const std::string img_dir); /************************************************************************/ /*获取扫描状态 */ /************************************************************************/ int GetServiceSate(); /************************************************************************/ /*开始扫描 */ /************************************************************************/ int Start(); /************************************************************************/ /* 暂停扫描 */ /************************************************************************/ int Pause(); /************************************************************************/ /* 继续扫描 */ /************************************************************************/ int Resume(); /************************************************************************/ /* 停止扫描 */ /************************************************************************/ int Stop(); /************************************************************************/ /* 放弃本次扫描结果 */ /************************************************************************/ int GiveUpCurrentBatch(); /************************************************************************/ /* 开始试卷成绩上传 (参数,接收进度消息的句柄) */ /************************************************************************/ int StartUploadPaper(HWND hWnd); /************************************************************************/ /* 重新识别试卷 */ /************************************************************************/ int ReIdentify(const int paper_id, const std::string& stu_code, const std::vector& params); /************************************************************************/ /* 查询模板图像路径 */ /************************************************************************/ int QueryMubanImgPath(int page_index, std::string& imgPath); /************************************************************************/ /* 查询模板图像数量 */ /************************************************************************/ int QueryMubanImgCount(int& page_count); /************************************************************************/ /* 查询异常试卷总数 */ /************************************************************************/ int QueryExptionPaperCount(int & exc_count, int & total_count); /************************************************************************/ /* 查询异常类型信息 */ /************************************************************************/ int QueryExptionTypeInfo(vector & infos); /************************************************************************/ /* 加载试卷异常列表 */ /************************************************************************/ int QueryExceptionPaper(const long exception_type, vector &studengList); /************************************************************************/ /* 加载正常试卷列表 */ /************************************************************************/ int QueryNormalPaper(vector &studengList); /************************************************************************/ /* 加载异常试卷详情 */ /************************************************************************/ int QueryPaperDetail(const int paper_id, PAPER_DETAIL &paper_detail, vector &pageList, vector &questionList); /************************************************************************/ /* 更新试卷考生 */ /************************************************************************/ 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); /************************************************************************/ /* 忽略试卷 */ /************************************************************************/ int IgnorePaper(const int paper_id); /************************************************************************/ /* 忽略试卷 */ /************************************************************************/ int IgnoreException(const long exceptions); /************************************************************************/ /* 清除数据 */ /************************************************************************/ int ClearDbTemp(); /************************************************************************/ /* 覆盖试卷 */ /************************************************************************/ int ReplacePaper(const int paper_id, int &paper_id_ret); /************************************************************************/ /* 全部覆盖试卷 */ /************************************************************************/ int ReplaceAllKaoHaoChongTu(vector &paper_id_List); void SetDataBaseManager(RTL_CRITICAL_SECTION* database_db_lock, CppSQLite3DB* database_db, int database_id); void getCurScanExam(std::string exam_code, std::vector> &stuInfo); void getCoverStuInfoByExamCode(std::string examCode, std::vector &stuInfo); void RestoreErrorHandleSite(const std::string& task_id, const std::string&type, const std::string& strPath); int PreErrorHandleRestoreSite(bool bcontinue, int scan_type, FEEDER_TYPE feederType, const ScanParam & param); void SetErrorHandle(bool bErrorHandle); void InitUploadManager(bool bEanble, bool bCountiue, bool bErrorHanle, bool bOnlineCard, IUploudNotify*pNotify); void OnScanListFilter(bool bsuccess, int nUploadState); int UploadOnScanCmd(int nCmd, const char*param, void*ret); int BatchServiceCmd(int cmd, void*param, void*ret); void QuickHandle(bool bGetPath, char*path_nor, int nor_len, char*path_exc, int exc_len); vector GetAllConfictPaper(int student_paper_id, string student_id);//获取冲突试卷 /************************************************************************/ /* 校验考号冲突是否是本次扫描(是1 否0) */ /* 返回值:是1 否0 */ /************************************************************************/ int ExamineThisScan(PAPER_DETAIL &paper_detail); /************************************************************************/ /* 设置试卷为非缺考, 确认为缺考 */ /* 参数:absent: 1 非缺考 2 确认缺考 3 标记缺考 */ /************************************************************************/ int SetAbsentExam(PAPER_DETAIL &paper_detail, int absent); /************************************************************************/ /* 更新异常客观题 */ /************************************************************************/ int QueryKeGuanTiYiChang(const int paper_id, std::vector& keguantiList); /************************************************************************/ /* 更新异常客观题 */ /************************************************************************/ int UpdateKeGuanTiYiChang(const int paper_id, std::vector& keguantiList); private: boost::shared_ptr service; };