InteractiveWork.cpp 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. #include "InteractiveWork.h"
  2. #include "RunAbstract.h"
  3. #include "RunDataCacheRefresh.h"
  4. #include "RunMaterialInfoListRefresh.h"
  5. #include "RunMaterialReplaceRefreshListModel.h"
  6. #include "RunMaterialManualReplaceRefreshListModel.h"
  7. #include "RunMaterialManualReplaceSubmit.h"
  8. #include "RunMaterialExceptionRefreshListModel.h"
  9. #include "RunHttpGet_exception_type.h"
  10. #include "RunHttpGet_severity_level.h"
  11. #include "RunHttpGet_getInfo.h"
  12. #include "RunHttpGet_getCabinetHomePage.h"
  13. #include "RunHttpGet_getInstructionsList.h"
  14. #include "RunHttpGet_getIsMaterialsLoanExceptionPage.h"
  15. #include "RunHttpGet_getSysUserCharacteristicPage.h"
  16. #include "RunHttpGet_getIsMaterialsPage.h"
  17. #include "RunHttpGet_getLastCheckPlanByCabinetCode.h"
  18. #include "RunHttpGet_selectIsMaterialsCabinetByCode.h"
  19. #include "RunHttpPost_startCheckPlan.h"
  20. #include "RunHttpPost_deleteSysUserCharacteristicByRecordIds.h"
  21. #include "RunHttpPost_insertCheckRecord.h"
  22. #include "RunHttpPost_insertSubmitPlan.h"
  23. #include "RunHttpPost_insertUserFace.h"
  24. #include "RunHttpPost_insertUserFingerprintDat.h"
  25. #include "RunHttpPost_loginByFace.h"
  26. #include "RunHttpPost_loginByFingerprintDat.h"
  27. #include "RunHttpPost_insertIsException.h"
  28. #include "RunViewWait.h"
  29. #include "RunViewRefresh_AbnormalReport.h"
  30. InteractiveWork::InteractiveWork(QObject *parent)
  31. : QThread(parent)
  32. {
  33. m_bThread = true;
  34. }
  35. InteractiveWork::~InteractiveWork()
  36. {
  37. m_bThread = false;
  38. }
  39. void InteractiveWork::appendTask(InteractiveTask *task)
  40. {
  41. QMutexLocker locker(&m_mutex);
  42. task->stat = InteractiveTask::StatWaitStart;
  43. m_listTask.append(task);
  44. }
  45. void InteractiveWork::run()
  46. {
  47. while (m_bThread)
  48. {
  49. QThread::msleep(10);
  50. QMutexLocker locker(&m_mutex);
  51. for (auto it = m_listTask.begin(); it != m_listTask.end();)
  52. {
  53. InteractiveTask *task = *it;
  54. // 任务等待开始
  55. if (task->stat == InteractiveTask::StatWaitStart)
  56. {
  57. RunAbstract *run = nullptr;
  58. switch(task->type)
  59. {
  60. case InteractiveTask::TypeDataCacheRefresh:
  61. run = new RunDataCacheRefresh(task, &m_mutex);
  62. break;
  63. case InteractiveTask::TypeMaterialInfoListRefresh:
  64. run = new RunMaterialInfoListRefresh(task, &m_mutex);
  65. break;
  66. case InteractiveTask::TypeMaterialReplaceRefreshListModel:
  67. run = new RunMaterialReplaceRefreshListModel(task, &m_mutex);
  68. break;
  69. case InteractiveTask::TypeMaterialManualReplaceRefreshListModel:
  70. run = new RunMaterialManualReplaceRefreshListModel(task, &m_mutex);
  71. break;
  72. case InteractiveTask::TypeMaterialManualReplaceSubmit:
  73. run = new RunMaterialManualReplaceSubmit(task, &m_mutex);
  74. break;
  75. // 刷新异常列表
  76. case InteractiveTask::TypeMaterialExceptionRefreshListModel:
  77. run = new RunMaterialExceptionRefreshListModel(task, &m_mutex);
  78. break;
  79. // 获取异常类型字典值
  80. case InteractiveTask::TypeHttpGet_exception_type:
  81. run = new RunHttpGet_exception_type(task, &m_mutex);
  82. break;
  83. // 获取严重等级字典值
  84. case InteractiveTask::TypeHttpGet_severity_level:
  85. run = new RunHttpGet_severity_level(task, &m_mutex);
  86. break;
  87. // 获取用户信息
  88. case InteractiveTask::TypeHttpGet_getInfo:
  89. run = new RunHttpGet_getInfo(task, &m_mutex);
  90. break;
  91. // 获取主界面信息
  92. case InteractiveTask::TypeHttpGet_getCabinetHomePage:
  93. run = new RunHttpGet_getCabinetHomePage(task, &m_mutex);
  94. break;
  95. // 获取用户使用说明
  96. case InteractiveTask::TypeHttpGet_getInstructionsList:
  97. run = new RunHttpGet_getInstructionsList(task, &m_mutex);
  98. break;
  99. // 获取异常信息
  100. case InteractiveTask::TypeHttpGet_getIsMaterialsLoanExceptionPage:
  101. run = new RunHttpGet_getIsMaterialsLoanExceptionPage(task, &m_mutex);
  102. break;
  103. // 查询用户特征
  104. case InteractiveTask::TypeHttpGet_getSysUserCharacteristicPage:
  105. run = new RunHttpGet_getSysUserCharacteristicPage(task, &m_mutex);
  106. break;
  107. // 查询当前机柜物资检查计划
  108. case InteractiveTask::TypeHttpGet_getLastCheckPlanByCabinetCode:
  109. run = new RunHttpGet_getLastCheckPlanByCabinetCode(task, &m_mutex);
  110. break;
  111. // 查询物资信息
  112. case InteractiveTask::TypeHttpGet_getIsMaterialsPage:
  113. run = new RunHttpGet_getIsMaterialsPage(task, &m_mutex);
  114. break;
  115. // 获取物资柜ID
  116. case InteractiveTask::TypeHttpGet_selectIsMaterialsCabinetByCode:
  117. run = new RunHttpGet_selectIsMaterialsCabinetByCode(task, &m_mutex);
  118. break;
  119. // 开始物资检查计划
  120. case InteractiveTask::TypeHttpPost_startCheckPlan:
  121. run = new RunHttpPost_startCheckPlan(task, &m_mutex);
  122. break;
  123. // 物资检查计划保存
  124. case InteractiveTask::TypeHttpPost_insertCheckRecord:
  125. run = new RunHttpPost_insertCheckRecord(task, &m_mutex);
  126. break;
  127. // 提交最终检查结果
  128. case InteractiveTask::TypeHttpPost_insertSubmitPlan:
  129. run = new RunHttpPost_insertSubmitPlan(task, &m_mutex);
  130. break;
  131. // 删除人员特征
  132. case InteractiveTask::TypeHttpPost_deleteSysUserCharacteristicByRecordIds:
  133. run = new RunHttpPost_deleteSysUserCharacteristicByRecordIds(task, &m_mutex);
  134. break;
  135. // 新增人脸记录
  136. case InteractiveTask::TypeHttpPost_insertUserFace:
  137. run = new RunHttpPost_insertUserFace(task, &m_mutex);
  138. break;
  139. // 新增指纹记录
  140. case InteractiveTask::TypeHttpPost_insertUserFingerprintDat:
  141. run = new RunHttpPost_insertUserFingerprintDat(task, &m_mutex);
  142. break;
  143. // 人脸登录
  144. case InteractiveTask::TypeHttpPost_loginByFace:
  145. run = new RunHttpPost_loginByFace(task, &m_mutex);
  146. break;
  147. // 指纹登录
  148. case InteractiveTask::TypeHttpPost_loginByFingerprintDat:
  149. run = new RunHttpPost_loginByFingerprintDat(task, &m_mutex);
  150. break;
  151. // 异常上报
  152. case InteractiveTask::TypeHttpPost_insertIsException:
  153. run = new RunHttpPost_insertIsException(task, &m_mutex);
  154. break;
  155. // 视图等待
  156. case InteractiveTask::TypeViewWait:
  157. run = new RunViewWait(task, &m_mutex);
  158. break;
  159. // 视图刷新-异常上报
  160. case InteractiveTask::TypeViewRefresh_AbnormalReport:
  161. run = new RunViewRefresh_AbnormalReport(task, &m_mutex);
  162. break;
  163. // 丢弃无效任务
  164. default:
  165. task->stat = InteractiveTask::StatFailStart;
  166. break;
  167. }
  168. if (run != nullptr)
  169. {
  170. task->stat = InteractiveTask::StatExecAfoot;
  171. QThreadPool::globalInstance()->start(run);
  172. }
  173. }
  174. // 任务正在执行
  175. else if (task->stat == InteractiveTask::StatExecAfoot)
  176. {
  177. // 执行中...
  178. }
  179. // 任务执行完成
  180. else if (task->stat == InteractiveTask::StatCompleted)
  181. {
  182. emit signal_completed(task);
  183. it = m_listTask.erase(it);
  184. continue;
  185. }
  186. // 任务执行失败
  187. else if (task->stat == InteractiveTask::StatFailStart)
  188. {
  189. emit signal_failstart(task);
  190. it = m_listTask.erase(it);
  191. continue;
  192. }
  193. ++it;
  194. }
  195. }
  196. }