Browse Source
Merge branch 'master' of http://47.92.195.73:8081/project_boditech_vidas_a8000_v3/a8k_app
master
Merge branch 'master' of http://47.92.195.73:8081/project_boditech_vidas_a8000_v3/a8k_app
master
10 changed files with 333 additions and 9 deletions
-
64doc/孵育盘管理.md
-
6doc/检测流程.md
-
58doc/耗材管理.md
-
183doc/试管及试管架管理.md
-
0doc/项目上下文管理.md
-
8src/main/java/a8k/app/hardware/type/LldType.java
-
7src/main/java/a8k/app/service/analyzer/ConsumableStateAnalyzerService.java
-
5src/main/java/a8k/app/service/mainctrl/TubeHolderSettingMgrService.java
-
5src/main/java/a8k/app/service/statemgr/ConsumablesMgrService.java
-
6src/main/java/a8k/app/service/verification/PipetteGunPerformanceValidator.java
@ -0,0 +1,64 @@ |
|||||
|
```mermaid |
||||
|
classDiagram |
||||
|
|
||||
|
%% 孵育盘状态管理器 |
||||
|
class IncubationPlateStateMgrService { |
||||
|
+ IncubationSubTank getOneExpiredPlate() // 获取一个孵育完成的插槽 |
||||
|
+ IncubatorPos takeOneIncubationIDLEPos() // 获取空闲的插槽位置 |
||||
|
} |
||||
|
|
||||
|
%% 孵育盘 |
||||
|
class IncubationPlate { |
||||
|
|
||||
|
} |
||||
|
|
||||
|
%% 孵育盘反应板插槽 |
||||
|
class IncubationSubTank { |
||||
|
|
||||
|
} |
||||
|
|
||||
|
%% 插槽位置 |
||||
|
class IncubatorPos { |
||||
|
|
||||
|
} |
||||
|
|
||||
|
%% 插槽状态 |
||||
|
class IncubationSubTankState { |
||||
|
EMPTY,//空 |
||||
|
RESERVED,//预定 |
||||
|
WAITING_FOR_DROP,//等待滴液 |
||||
|
INCUBATING, //孵育中 |
||||
|
INCUBATION_COMPLETE, //孵育完成 |
||||
|
ERROR,//错误 |
||||
|
} |
||||
|
<<enumeration>> IncubationSubTankState |
||||
|
|
||||
|
IncubationSubTank "1" --> "1" IncubatorPos |
||||
|
IncubationSubTank "1" --> "1" IncubationSubTankState |
||||
|
IncubationPlate "1" --> "20" IncubationSubTank |
||||
|
IncubationPlateStateMgrService --> IncubationPlate |
||||
|
``` |
||||
|
|
||||
|
```mermaid |
||||
|
--- |
||||
|
title: 孵育盘槽位状态变更图 |
||||
|
--- |
||||
|
stateDiagram-v2 |
||||
|
[*] --> EMPTY |
||||
|
RESERVED --> INCUBATING: startIncubating |
||||
|
INCUBATING --> INCUBATION_COMPLETE: scheduled_timeout[remainTimeSec < 0] |
||||
|
%% 当找到一个空闲的槽位时将其状态置为预留 |
||||
|
EMPTY --> RESERVED: takeOneIncubationIDLEPos |
||||
|
INCUBATION_COMPLETE --> EMPTY: reset |
||||
|
RESERVED --> EMPTY: reset |
||||
|
INCUBATING --> EMPTY: reset |
||||
|
``` |
||||
|
|
||||
|
```mermaid |
||||
|
classDiagram |
||||
|
|
||||
|
%% 项目上下文管理器 |
||||
|
class ProjectContextMgrService { |
||||
|
|
||||
|
} |
||||
|
``` |
@ -0,0 +1,183 @@ |
|||||
|
|
||||
|
```mermaid |
||||
|
classDiagram |
||||
|
%% 试管状态管理器 |
||||
|
class TubeStateMgrService { |
||||
|
|
||||
|
} |
||||
|
|
||||
|
%% 试管设置 |
||||
|
class TubeSetting { |
||||
|
public int tubeIndex; // 试管位置索引 |
||||
|
|
||||
|
public String userid = ""; //用户输入的样本ID,不做逻辑,只做展示 |
||||
|
public String sampleBarcode = ""; //用于请求用户信息的条码ID |
||||
|
public List<Integer> projId = new ArrayList<>(); //项目编码,标明需要做的项目 |
||||
|
public BloodType bloodType = BloodType.WHOLE_BLOOD; |
||||
|
} |
||||
|
|
||||
|
%% 试管架设置管理器 |
||||
|
class TubeHolderSettingMgrService { |
||||
|
|
||||
|
} |
||||
|
|
||||
|
%% 试管架设置 |
||||
|
class TubeHolderSetting { |
||||
|
public String uuid = UUID.randomUUID().toString(); //唯一标识 |
||||
|
public Boolean active = false;//是否激活对应前端页面的☑️ |
||||
|
public TubeSetting[] tubeSettings = new TubeSetting[10]; // 试管设置 |
||||
|
public Boolean lock = false;//如果后台已经使用,前端不允许修改 |
||||
|
} |
||||
|
|
||||
|
TubeHolderSettingMgrService --> TubeHolderSetting |
||||
|
TubeHolderSetting "1" --> "10" TubeSetting |
||||
|
|
||||
|
%% 试管架设置状态 |
||||
|
class TubeHolderSettingState { |
||||
|
INACTIVE, |
||||
|
ACTIVE, |
||||
|
LOCKED |
||||
|
} |
||||
|
<<enumeration>> TubeHolderSettingState |
||||
|
|
||||
|
%% 试管架 |
||||
|
class TubeHolder { |
||||
|
|
||||
|
} |
||||
|
|
||||
|
%% 试管架状态 |
||||
|
class TubeHolderState { |
||||
|
IDLE, //没有试管架 |
||||
|
PROCESSING, //正在处理试管架 |
||||
|
} |
||||
|
<<enumeration>> TubeHolderState |
||||
|
|
||||
|
%% 试管架类型 |
||||
|
class A8kTubeHolderType { |
||||
|
BloodTube("0000"), //全血试管 |
||||
|
// MiniTube("1111"), //迷你试管 |
||||
|
MiniBlood("2222"), //阳普管 |
||||
|
BulletTube1P5("5555"),//子弹头试管1.5mL |
||||
|
BulletTube0P5("4444"), //子弹头试管0.5mL |
||||
|
StoolTestTube("8888"); //粪便试管 |
||||
|
} |
||||
|
<<enumeration>> A8kTubeHolderType |
||||
|
|
||||
|
TubeHolder --> TubeHolderState |
||||
|
TubeHolder "1" --> "10" Tube |
||||
|
TubeHolder --> A8kTubeHolderType |
||||
|
``` |
||||
|
|
||||
|
|
||||
|
```mermaid |
||||
|
--- |
||||
|
title: 新增试管架配置时序图 |
||||
|
--- |
||||
|
sequenceDiagram |
||||
|
actor user |
||||
|
participant TubeHolderSettingMgrControler |
||||
|
participant TubeHolderSettingMgrService |
||||
|
participant AppEventBusService |
||||
|
|
||||
|
user->>+TubeHolderSettingMgrControler: 添加试管架 |
||||
|
TubeHolderSettingMgrControler->>+TubeHolderSettingMgrService: newTubeHolderSetting() |
||||
|
TubeHolderSettingMgrService ->>-TubeHolderSettingMgrControler: 试管架配置 |
||||
|
TubeHolderSettingMgrService -->> AppEventBusService: 发送试管架配置更新消息 |
||||
|
TubeHolderSettingMgrControler ->>-user: 操作成功 |
||||
|
``` |
||||
|
|
||||
|
```mermaid |
||||
|
--- |
||||
|
title: 激活试管架时序图 |
||||
|
--- |
||||
|
sequenceDiagram |
||||
|
actor user |
||||
|
participant TubeHolderSettingMgrControler |
||||
|
participant TubeHolderSettingMgrService |
||||
|
|
||||
|
user ->>+ TubeHolderSettingMgrControler: 激活试管架 |
||||
|
TubeHolderSettingMgrControler ->>+ TubeHolderSettingMgrService: updateActiveState(String uuid, Boolean active) |
||||
|
TubeHolderSettingMgrService ->>- TubeHolderSettingMgrControler: void |
||||
|
TubeHolderSettingMgrControler ->>- user: 操作成功 |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
```mermaid |
||||
|
--- |
||||
|
tilte: 扫描试管架任务时序图 |
||||
|
--- |
||||
|
sequenceDiagram |
||||
|
actor a8k |
||||
|
participant AC30ScanTubeHolderTask |
||||
|
participant TubeHolderSettingMgrService |
||||
|
participant AppEventBusService |
||||
|
|
||||
|
a8k->>+AC30ScanTubeHolderTask:doAction |
||||
|
AC30ScanTubeHolderTask->>+TubeHolderSettingMgrService:getThelastActiveTubeHolderSetting |
||||
|
TubeHolderSettingMgrService->>-AC30ScanTubeHolderTask:TubeHolderSetting |
||||
|
AC30ScanTubeHolderTask->>+AC30ScanTubeHolderTask:priDoAction(tubeSetting) |
||||
|
AC30ScanTubeHolderTask->>+AC30ScanTubeHolderTask:doEnterTubeHolder推入试管架 |
||||
|
AC30ScanTubeHolderTask->>-AC30ScanTubeHolderTask:推入结果 |
||||
|
alt 推入失败 |
||||
|
AC30ScanTubeHolderTask-->>AppEventBusService:发送推入试管架失败消息 |
||||
|
else 推入成功 |
||||
|
AC30ScanTubeHolderTask->>+AC30ScanTubeHolderTask:doScanHolder |
||||
|
AC30ScanTubeHolderTask->>-AC30ScanTubeHolderTask:TubeHolderScanResult |
||||
|
end |
||||
|
|
||||
|
alt 扫描结果为空 |
||||
|
AC30ScanTubeHolderTask->>+AC30ScanTubeHolderTask:doEjectHodler |
||||
|
AC30ScanTubeHolderTask->>-AC30ScanTubeHolderTask:void |
||||
|
else 扫描结果不为空 |
||||
|
AC30ScanTubeHolderTask->>+AC30ScanTubeHolderTask:parseScanResult(scanResult, tubeHolderSetting) |
||||
|
AC30ScanTubeHolderTask->>-AC30ScanTubeHolderTask:TubeHolder |
||||
|
end |
||||
|
|
||||
|
alt 试管扫描结果解析失败 |
||||
|
AC30ScanTubeHolderTask->>+AC30ScanTubeHolderTask:doEjectHodler |
||||
|
AC30ScanTubeHolderTask->>-AC30ScanTubeHolderTask:void |
||||
|
else 扫描结果解析成功 |
||||
|
AC30ScanTubeHolderTask->>+AC30ScanTubeHolderTask:newTubeHolder(tubeholder) |
||||
|
AC30ScanTubeHolderTask->>+ConsumableStateAnalyzerService: analyze |
||||
|
ConsumableStateAnalyzerService->>-AC30ScanTubeHolderTask: 耗材状态信息(项目还有多少耗材,当前试管架需要多少项目多少耗材) |
||||
|
AC30ScanTubeHolderTask->>+ConsumableStateAnalyzerService: isEnough |
||||
|
alt 耗材不够 |
||||
|
ConsumableStateAnalyzerService->>-AC30ScanTubeHolderTask: 耗材不足错误 |
||||
|
end |
||||
|
AC30ScanTubeHolderTask->>+ConsumableStateAnalyzerService: isHasEnoughTip |
||||
|
alt Tip不足 |
||||
|
ConsumableStateAnalyzerService->>-AC30ScanTubeHolderTask: Tip头不足错误 |
||||
|
end |
||||
|
|
||||
|
|
||||
|
loop 试管个数 |
||||
|
AC30ScanTubeHolderTask->>+AC30ScanTubeHolderTask: newSample(生成一条检验记录) |
||||
|
AC30ScanTubeHolderTask->>-AC30ScanTubeHolderTask: 检验记录id |
||||
|
loop 项目个数 |
||||
|
AC30ScanTubeHolderTask->>+ProjectContextMgrService: newCxt(生产项目上下文) |
||||
|
ProjectContextMgrService->>-AC30ScanTubeHolderTask: void |
||||
|
end |
||||
|
end |
||||
|
|
||||
|
AC30ScanTubeHolderTask->>+TubeHolder: setState(TubeHolderState.PROCESSING) |
||||
|
TubeHolder->>-AC30ScanTubeHolderTask: void |
||||
|
AC30ScanTubeHolderTask->>-AC30ScanTubeHolderTask:AppError |
||||
|
end |
||||
|
|
||||
|
alt 存在系统错误 |
||||
|
AC30ScanTubeHolderTask->>+AC30ScanTubeHolderTask:doEjectHodler |
||||
|
AC30ScanTubeHolderTask->>-AC30ScanTubeHolderTask:void |
||||
|
end |
||||
|
AC30ScanTubeHolderTask->>-AC30ScanTubeHolderTask:void |
||||
|
AC30ScanTubeHolderTask->>-a8k: void |
||||
|
``` |
||||
|
|
||||
|
```mermaid |
||||
|
--- |
||||
|
title: 一次检测时序图 |
||||
|
--- |
||||
|
|
||||
|
sequenceDiagram |
||||
|
|
||||
|
|
||||
|
``` |
Write
Preview
Loading…
Cancel
Save
Reference in new issue