Bantch.h 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. #pragma once
  2. #include <boost/smart_ptr.hpp>
  3. #include <vector>
  4. #include "identifydll_global.h"
  5. #include "basic_struct.h"
  6. using namespace std;
  7. class CBatchManager;
  8. class CSmartEvaluationService;
  9. class CBatchService;
  10. struct IUploudNotify;
  11. class SMARTEVALUATIONLOGIC_API CBatch
  12. {
  13. friend class CBatchManager;
  14. template<class T> friend class boost::shared_ptr;
  15. template<class T> friend inline void boost::checked_delete(T *);
  16. private:
  17. CBatch(bool bOnlineCard, int nSubjectID, int nOnlineScanType);
  18. ~CBatch();
  19. public:
  20. void leaveCurrentBatch();
  21. int SetHandlerWnd(HWND hwnd);
  22. int OnBnClickedButtonStartScan();
  23. /************************************************************************/
  24. /* 加载模板 */
  25. /************************************************************************/
  26. string GetBatchCode();
  27. int LoadSchema(long long examId, std::string examName, long examCourseId, std::string courseName, const std::string schemaPath, std::string rule = "");
  28. /************************************************************************/
  29. /* 准备扫描 */
  30. /************************************************************************/
  31. int ReadyScanEX(FEEDER_TYPE feederType, const ScanParam & param);
  32. /************************************************************************/
  33. /*设置从文件夹扫描的路径(继续扫描时使用) */
  34. /************************************************************************/
  35. int SetFolderScanDir(const std::string img_dir);
  36. /************************************************************************/
  37. /*获取扫描状态 */
  38. /************************************************************************/
  39. int GetServiceSate();
  40. /************************************************************************/
  41. /*开始扫描 */
  42. /************************************************************************/
  43. int Start();
  44. /************************************************************************/
  45. /* 暂停扫描 */
  46. /************************************************************************/
  47. int Pause();
  48. /************************************************************************/
  49. /* 继续扫描 */
  50. /************************************************************************/
  51. int Resume();
  52. /************************************************************************/
  53. /* 停止扫描 */
  54. /************************************************************************/
  55. int Stop();
  56. /************************************************************************/
  57. /* 放弃本次扫描结果 */
  58. /************************************************************************/
  59. int GiveUpCurrentBatch();
  60. /************************************************************************/
  61. /* 开始试卷成绩上传 (参数,接收进度消息的句柄) */
  62. /************************************************************************/
  63. int StartUploadPaper(HWND hWnd);
  64. /************************************************************************/
  65. /* 重新识别试卷 */
  66. /************************************************************************/
  67. int ReIdentify(const int paper_id, const std::string& stu_code, const std::vector<img_param>& params);
  68. /************************************************************************/
  69. /* 查询模板图像路径 */
  70. /************************************************************************/
  71. int QueryMubanImgPath(int page_index, std::string& imgPath);
  72. /************************************************************************/
  73. /* 查询模板图像数量 */
  74. /************************************************************************/
  75. int QueryMubanImgCount(int& page_count);
  76. /************************************************************************/
  77. /* 查询异常试卷总数 */
  78. /************************************************************************/
  79. int QueryExptionPaperCount(int & exc_count, int & total_count);
  80. /************************************************************************/
  81. /* 查询异常类型信息 */
  82. /************************************************************************/
  83. int QueryExptionTypeInfo(vector<EXCEPTION_TYPE_INFO> & infos);
  84. /************************************************************************/
  85. /* 加载试卷异常列表 */
  86. /************************************************************************/
  87. int QueryExceptionPaper(const long exception_type, vector<STUDENT_INFO> &studengList);
  88. /************************************************************************/
  89. /* 加载正常试卷列表 */
  90. /************************************************************************/
  91. int QueryNormalPaper(vector<STUDENT_INFO> &studengList);
  92. /************************************************************************/
  93. /* 加载异常试卷详情 */
  94. /************************************************************************/
  95. int QueryPaperDetail(const int paper_id, PAPER_DETAIL &paper_detail, vector<PAGE_DETAIL> &pageList, vector<GROUP_QUESTION> &questionList);
  96. /************************************************************************/
  97. /* 更新试卷考生 */
  98. /************************************************************************/
  99. 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);
  100. /************************************************************************/
  101. /* 忽略试卷 */
  102. /************************************************************************/
  103. int IgnorePaper(const int paper_id);
  104. /************************************************************************/
  105. /* 忽略试卷 */
  106. /************************************************************************/
  107. int IgnoreException(const long exceptions);
  108. /************************************************************************/
  109. /* 清除数据 */
  110. /************************************************************************/
  111. int ClearDbTemp();
  112. /************************************************************************/
  113. /* 覆盖试卷 */
  114. /************************************************************************/
  115. int ReplacePaper(const int paper_id, int &paper_id_ret);
  116. /************************************************************************/
  117. /* 全部覆盖试卷 */
  118. /************************************************************************/
  119. int ReplaceAllKaoHaoChongTu(vector<int> &paper_id_List);
  120. void SetDataBaseManager(RTL_CRITICAL_SECTION* database_db_lock, CppSQLite3DB* database_db, int database_id);
  121. void getCurScanExam(std::string exam_code, std::vector<std::vector<coverStu>> &stuInfo);
  122. void getCoverStuInfoByExamCode(std::string examCode, std::vector<coverStu> &stuInfo);
  123. void RestoreErrorHandleSite(const std::string& task_id, const std::string&type, const std::string& strPath);
  124. int PreErrorHandleRestoreSite(bool bcontinue, int scan_type, FEEDER_TYPE feederType, const ScanParam & param);
  125. void SetErrorHandle(bool bErrorHandle);
  126. void InitUploadManager(bool bEanble, bool bCountiue, bool bErrorHanle, bool bOnlineCard, IUploudNotify*pNotify);
  127. void OnScanListFilter(bool bsuccess, int nUploadState);
  128. int UploadOnScanCmd(int nCmd, const char*param, void*ret);
  129. int BatchServiceCmd(int cmd, void*param, void*ret);
  130. void QuickHandle(bool bGetPath, char*path_nor, int nor_len, char*path_exc, int exc_len);
  131. vector<int> GetAllConfictPaper(int student_paper_id, string student_id);//获取冲突试卷
  132. /************************************************************************/
  133. /* 校验考号冲突是否是本次扫描(是1 否0) */
  134. /* 返回值:是1 否0 */
  135. /************************************************************************/
  136. int ExamineThisScan(PAPER_DETAIL &paper_detail);
  137. /************************************************************************/
  138. /* 设置试卷为非缺考, 确认为缺考 */
  139. /* 参数:absent: 1 非缺考 2 确认缺考 3 标记缺考 */
  140. /************************************************************************/
  141. int SetAbsentExam(PAPER_DETAIL &paper_detail, int absent);
  142. /************************************************************************/
  143. /* 更新异常客观题 */
  144. /************************************************************************/
  145. int QueryKeGuanTiYiChang(const int paper_id, std::vector<KEGUANTI_DETAIL>& keguantiList);
  146. /************************************************************************/
  147. /* 更新异常客观题 */
  148. /************************************************************************/
  149. int UpdateKeGuanTiYiChang(const int paper_id, std::vector<KEGUANTI_DETAIL>& keguantiList);
  150. private:
  151. boost::shared_ptr<CBatchService> service;
  152. };