|
|
@@ -36,6 +36,7 @@ import java.util.List;
|
|
|
import java.util.Optional;
|
|
|
import java.util.concurrent.CompletableFuture;
|
|
|
import java.util.concurrent.Executor;
|
|
|
+import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
import java.util.function.Supplier;
|
|
|
|
|
|
/**
|
|
|
@@ -200,10 +201,11 @@ public class DeviceInfoListener implements IIotMsgHandler {
|
|
|
private void handleIntelligent(BusDeviceRunningEntity device, DeviceOperator deviceOperator, List<Supplier<?>> cacheOperation) {
|
|
|
//开机数据不进行加减档判定
|
|
|
if (!DeviceStatusEnum.StartUp.equals(device.getRunState())) {
|
|
|
- boolean flowLimit = deviceOperator.isFlowLimit();
|
|
|
+ AtomicBoolean flowLimit=new AtomicBoolean(deviceOperator.isFlowLimit());
|
|
|
+ BigDecimal lastContinueDose = deviceOperator.getContinueDose();
|
|
|
if(FlowStatusEnum.None==device.getWarnFlow()
|
|
|
&& Boolean.FALSE.equals(device.isNewInfusion())){
|
|
|
- BigDecimal lastContinueDose = deviceOperator.getContinueDose();
|
|
|
+
|
|
|
if(lastContinueDose!=null){
|
|
|
if(CompareUtil.compare(device.getContinueDose(),lastContinueDose)>0){
|
|
|
log.info("消息【{}】,设备【{}】,当前流速【{}】,上一状态流速【{}】,加档",device.getMsgId(),device.getDeviceId(),device.getContinueDose(),lastContinueDose);
|
|
|
@@ -214,12 +216,21 @@ public class DeviceInfoListener implements IIotMsgHandler {
|
|
|
}
|
|
|
}
|
|
|
if(!FlowStatusEnum.Down.equals(device.getWarnFlow())){
|
|
|
- device.setWarnFlow(flowLimit?FlowStatusEnum.Limited:device.getWarnFlow());
|
|
|
+ device.setWarnFlow(flowLimit.get()?FlowStatusEnum.Limited:device.getWarnFlow());
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ //上限值调整
|
|
|
+ if (FlowStatusEnum.Limited.equals(device.getWarnFlow())) {
|
|
|
+ if(CompareUtil.compare(device.getContinueDose(),device.getFlowUpLimit())<0){
|
|
|
+ flowLimit.set(false);
|
|
|
+ device.setWarnFlow(FlowStatusEnum.None);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
cacheOperation.add(()->{
|
|
|
deviceOperator.setContinueDose(device.getContinueDose());
|
|
|
- if(flowLimit&&Boolean.FALSE.equals(device.isNewInfusion())){
|
|
|
+ if(flowLimit.get()&&Boolean.FALSE.equals(device.isNewInfusion())){
|
|
|
//同一输注过程中,只有减档才能够消除加档受限
|
|
|
if(FlowStatusEnum.Down.equals(device.getWarnFlow())){
|
|
|
deviceOperator.setFlowLimit(false);
|