123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- #pragma once
- #include <boost/smart_ptr.hpp>
- #include <vector>
- #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<class T> friend class boost::shared_ptr;
- template<class T> 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<img_param>& 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<EXCEPTION_TYPE_INFO> & infos);
- /************************************************************************/
- /* 加载试卷异常列表 */
- /************************************************************************/
- int QueryExceptionPaper(const long exception_type, vector<STUDENT_INFO> &studengList);
- /************************************************************************/
- /* 加载正常试卷列表 */
- /************************************************************************/
- int QueryNormalPaper(vector<STUDENT_INFO> &studengList);
- /************************************************************************/
- /* 加载异常试卷详情 */
- /************************************************************************/
- int QueryPaperDetail(const int paper_id, PAPER_DETAIL &paper_detail, vector<PAGE_DETAIL> &pageList, vector<GROUP_QUESTION> &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<int> &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<std::vector<coverStu>> &stuInfo);
- void getCoverStuInfoByExamCode(std::string examCode, std::vector<coverStu> &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<int> 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<KEGUANTI_DETAIL>& keguantiList);
- /************************************************************************/
- /* 更新异常客观题 */
- /************************************************************************/
- int UpdateKeGuanTiYiChang(const int paper_id, std::vector<KEGUANTI_DETAIL>& keguantiList);
- private:
- boost::shared_ptr<CBatchService> service;
- };
|