You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

250 lines
7.0 KiB

  1. ```mermaid
  2. classDiagram
  3. class MainFlowCtrlScheduler
  4. class GStateMgrService
  5. class DeviceWorkStateMgrService
  6. class DeviceState
  7. class ModuleEnableCtrlDriver
  8. class LiquidOperationCtrlService
  9. class A8kActionTask
  10. class AC20ScanReactionPlate
  11. AC20ScanReactionPlate --|> A8kActionTask
  12. class IMainFlowStateChangeProcesser
  13. class Thread
  14. MainFlowCtrlScheduler --> GStateMgrService
  15. MainFlowCtrlScheduler --> DeviceWorkStateMgrService
  16. MainFlowCtrlScheduler --> ModuleEnableCtrlDriver
  17. MainFlowCtrlScheduler --> LiquidOperationCtrlService
  18. MainFlowCtrlScheduler "1" --> "*" A8kActionTask
  19. MainFlowCtrlScheduler --> IMainFlowStateChangeProcesser
  20. MainFlowCtrlScheduler --> Thread
  21. DeviceWorkStateMgrService --> DeviceState
  22. ```
  23. ```mermaid
  24. ---
  25. title: 检测流程初始化
  26. ---
  27. flowchart TD
  28. A(开始) --> |Spring容器启动后| B[注册所有的检测流程可以将会执行的动作]
  29. B --> C[注册设备状态变更处理器]
  30. C --> D[核心流程将会执行的动作按照方法名字母顺序升序排序]
  31. D --> E[启动职守线程处理设备工作状态变更]
  32. E --> F(结束)
  33. ```
  34. ```mermaid
  35. ---
  36. title: 设备工作状态变更状态图
  37. ---
  38. stateDiagram-v2
  39. [*] --> IDLE
  40. IDLE --> WORKING : 点击开始检测/执行检测流程
  41. WORKING --> PAUSE : 点击暂停
  42. PAUSE --> WORKING : 点击继续/onResume
  43. WORKING --> IDLE : 点击停止/设备清空状态复位
  44. PAUSE --> IDLE : 点击停止
  45. ```
  46. ```mermaid
  47. ---
  48. title: 系统的工作状态
  49. ---
  50. stateDiagram-v2
  51. [*] --> COMPLETED
  52. COMPLETED --> START_PENDING : 点击开始检测
  53. START_PENDING --> COMPLETED : [设备状态为IDLE]/设置设备状态为WORKING
  54. COMPLETED --> PAUSE_PENDING : 点击暂停
  55. PAUSE_PENDING --> COMPLETED : [设备状态为WORKING]/设置设备状态为PAUSE
  56. COMPLETED --> RESUME_PENDING : 点击继续
  57. RESUME_PENDING --> COMPLETED : [设备状态为PAUSE]/设置设备状态为WORKING
  58. COMPLETED --> STOP_PENDING : 点击停止
  59. STOP_PENDING --> COMPLETED : [设备状态不为IDLE]/设置设备状态为IDLE
  60. ```
  61. ```mermaid
  62. ---
  63. title: 系统状态定时处理流程
  64. ---
  65. flowchart TD
  66. A(开始) --> B[获取系统状态]
  67. B --> C{设备错误}
  68. C --Y--> B
  69. C --N--> D[设备工作状态处理]
  70. D --> E[系统状态处理]
  71. E --> END(结束)
  72. ```
  73. ```mermaid
  74. ---
  75. title: 设备状态变更处理流程
  76. ---
  77. flowchart TD
  78. BEGIN(开始) --> DeviceStateDiv{设备状态}
  79. DeviceStateDiv --暂停--> OnPause[do nothing]
  80. DeviceStateDiv --恢复--> OnResume[do nothing]
  81. DeviceStateDiv --工作--> OnWorking
  82. OnPause --> END(结束)
  83. OnResume --> END(结束)
  84. OnWorking --> END(结束)
  85. subgraph OnWorking
  86. SUB_BEGIN(开始) --> G
  87. G{存在就绪任务} --Y--> B[执行操作]
  88. G --N--> E[获取系统状态]
  89. B --> C{存在设备错误}
  90. C --Y--> D[填充错误信息]
  91. D --> E
  92. C --N--> E
  93. E --> F{系统状态切换中或者系统出现错误}
  94. F --Y--> SUB_END(结束)
  95. F --N--> G
  96. end
  97. ```
  98. ```mermaid
  99. ---
  100. title: 系统状态处理
  101. ---
  102. flowchart TD
  103. BEGIN(开始) --> A[获取系统状态]
  104. A --> B{存在设备错误}
  105. B --Y--> C[标记为发生严重错误]
  106. C --> D[设置系统状态为状态变更完成]
  107. D --> E[发送应用错误信息]
  108. E --> F[失能所有电机]
  109. F --> G[设置设备状态为空闲]
  110. G --> END(结束)
  111. B --N--> H{系统状态判断}
  112. H --启动切换中--> OnStartPending[设备状态为IDLE则设备状态设置为WORKING]
  113. H --暂停切换中--> OnPausePending[设备状态为WORKING则设备状态设置为PAUSE]
  114. H --恢复切换中--> OnResumePending[设备状态为PAUSE则设备状态设置为WORKING]
  115. H --停止切换中--> OnStopPending[设备状态不为IDLE则设备状态设置为IDLE]
  116. OnStartPending --> J[设置系统状态为状态变更完成]
  117. OnPausePending --> J
  118. OnResumePending --> J
  119. OnStopPending --> J
  120. J --> END
  121. ```
  122. ```mermaid
  123. classDiagram
  124. class A8kActionTask {
  125. + Boolean isReady()
  126. + List<AppError> doAction()
  127. }
  128. class AC20ScanReactionPlate {
  129. }
  130. AC20ScanReactionPlate --|> A8kActionTask
  131. AC20ScanReactionPlate --> OptScanModuleStateMgrService
  132. AC20ScanReactionPlate --> ProjectContextMgrService
  133. AC20ScanReactionPlate --> ReactionRecordMgrService
  134. AC20ScanReactionPlate --> OptScanModuleCtrlService
  135. ```
  136. ```mermaid
  137. ---
  138. title: 扫描反应板获取结果工作流程
  139. ---
  140. flowchart TD
  141. BEGIN(开始) --> A[设置光学扫描模组状态为扫描中]
  142. A --> B[获取项目上下文]
  143. B --> E[根据项目中的光学类型生成扫描原始结果]
  144. E --> F[根据原始结果分析得到反应结果]
  145. F --> G[丢弃反应板]
  146. G --> H[设置光学扫描模组状态为空闲]
  147. H --> I[保存反应板反应结果]
  148. I --> END(结束)
  149. ```
  150. ```mermaid
  151. ---
  152. title: 单次任务执行时序
  153. ---
  154. sequenceDiagram
  155. participant A8kActionTask
  156. participant OptScanModuleCtrlService
  157. participant OptModuleDriver
  158. participant A8kCanBusService
  159. participant AC20ScanReactionPlate
  160. participant A8kCanBusConnection
  161. participant WebSocketClient
  162. A8kActionTask ->> AC20ScanReactionPlate: doAction
  163. AC20ScanReactionPlate ->> AC20ScanReactionPlate: doOptScanXX
  164. AC20ScanReactionPlate ->> OptScanModuleCtrlService: optScan
  165. OptScanModuleCtrlService ->> OptScanModuleCtrlService: startOptScan
  166. OptScanModuleCtrlService ->> OptModuleDriver: setReg
  167. OptModuleDriver ->> A8kCanBusService: moduleSetReg
  168. A8kCanBusService ->> A8kCanBusConnection: callcmd2
  169. A8kCanBusConnection ->> A8kCanBusConnection: packParamsToPacket
  170. A8kCanBusConnection ->> A8kCanBusConnection: autoReSend
  171. A8kCanBusConnection ->> A8kCanBusConnection: priSend
  172. A8kCanBusConnection ->> A8kCanBusConnection: _priSend
  173. A8kCanBusConnection ->> WebSocketClient: send
  174. ```
  175. ```mermaid
  176. ---
  177. title: 全血样本预处理流程
  178. ---
  179. flowchart
  180. Begin[开始] --> S1[获取当前试管信息]
  181. S1 --> S2[获取当前试管架配置信息]
  182. %% 试管样本准备阶段
  183. S2 --> S3[夹取试管到摇匀位置]
  184. S3 --> S4[摇匀]
  185. S4 --> S5[取试管帽]
  186. S5 --> S6[设置样本预处理完成]
  187. %% 反应板夹准备阶段
  188. S6 --> S7[丢弃反应板夹为什么]
  189. S7 --> S8[拉取反应板夹]
  190. S8 --> S9[丢弃反应板夹为什么]
  191. S9 --> S10[推送反应板夹]
  192. S10 --> S11[设置反应板夹准备完毕]
  193. %% 处理样本
  194. S11 --> S12[刺破小缓冲液]
  195. S12 --> S13[取样]
  196. S13 --> S14[将孵育盘转到待滴液的位置]
  197. S14 --> S15[滴液]
  198. %% 孵育处理
  199. S15 --> S16[查询项目的孵育时间]
  200. S16 --> S17[设置孵育开始时间和孵育时长开始孵育]
  201. S17 --> S18[设置样本处理完成]
  202. ```
  203. ```mermaid
  204. ---
  205. title: 样本处理类图
  206. ---
  207. classDiagram
  208. %% 试管
  209. class Tube
  210. %% 试管架
  211. class TubeHolder
  212. %% 反应液类型
  213. class A8kReactionFlowType
  214. ```