|
|
@@ -10,7 +10,6 @@ import cn.hutool.crypto.asymmetric.SignAlgorithm;
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
-import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
import com.coffee.bus.entity.*;
|
|
|
import com.coffee.bus.enums.PatientAlarmEnum;
|
|
|
@@ -21,7 +20,6 @@ import com.coffee.bus.registry.device.bean.DeviceCacheInfo;
|
|
|
import com.coffee.bus.registry.device.DeviceOperator;
|
|
|
import com.coffee.bus.registry.patient.PatientOperator;
|
|
|
import com.coffee.bus.registry.patient.PatientRegistry;
|
|
|
-import com.coffee.bus.registry.patient.bean.DeviceTimeSmallInfo;
|
|
|
import com.coffee.bus.registry.patient.bean.PatientCacheInfo;
|
|
|
import com.coffee.bus.service.*;
|
|
|
import com.coffee.bus.utils.WsPublishUtils;
|
|
|
@@ -33,7 +31,6 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import java.util.*;
|
|
|
import java.util.List;
|
|
|
import java.util.function.Supplier;
|
|
|
-import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @author lifang
|
|
|
@@ -86,7 +83,8 @@ public class DeviceInfoListener {
|
|
|
public void deviceInfoDetail(DeviceInfoEvent infoEvent){
|
|
|
//保证统一设备数据顺序处理,若数据发送过快,为防止冲突,请在此加锁处理 todo
|
|
|
synchronized (infoEvent.getDeviceId()){
|
|
|
- log.info("开始处理时间------------------------[{}]",System.currentTimeMillis());
|
|
|
+ log.info("接收到设备消息:{}",JSONUtil.toJsonStr(infoEvent.getContent()));
|
|
|
+ long startTime = System.currentTimeMillis();
|
|
|
/****************处理泵数据 todo 后续交由上游处理****************/
|
|
|
BusDeviceRunningEntity device = infoEvent.getContent();
|
|
|
// device=device.startUpHandle();
|
|
|
@@ -97,6 +95,8 @@ public class DeviceInfoListener {
|
|
|
device.setUploadTime(device.getUploadTime()==null?new Date():device.getUploadTime());
|
|
|
DeviceOperator<DeviceCacheInfo> deviceOperator = deviceRegistry.getOperator(deviceId);
|
|
|
device.setMaster(deviceOperator.getMaster());
|
|
|
+ device.setIsUndo(deviceOperator.getUndo());
|
|
|
+ device.setTenantId(deviceOperator.getTenantId());
|
|
|
|
|
|
//数据准确性判断
|
|
|
String classification = device.getClassification();
|
|
|
@@ -122,13 +122,10 @@ public class DeviceInfoListener {
|
|
|
handleHospitalConfig(device,cacheOperation);
|
|
|
if(first){
|
|
|
deviceService.update(new UpdateWrapper<BusDeviceEntity>().lambda().eq(BusDeviceEntity::getDeviceId,deviceId).set(BusDeviceEntity::getType,device.getType()));
|
|
|
- PatientOperator<PatientCacheInfo> operator = patientRegistry.getOperator(device.getTenantId(), device.getPatientCode());
|
|
|
- //首次插入则设置设备别名
|
|
|
- device.setAlias(deviceOperator.getAlias());
|
|
|
//首次上传数据,开启病号监控时长
|
|
|
clinicService.update(new UpdateWrapper<BusClinicEntity>()
|
|
|
.lambda()
|
|
|
- .eq(BusClinicEntity::getId,operator.getClinicId())
|
|
|
+ .eq(BusClinicEntity::getId,device.getClinicId())
|
|
|
.set(BusClinicEntity::getWard,device.getWard())
|
|
|
.set(BusClinicEntity::getBedNo,device.getBedNo())
|
|
|
.set(BusClinicEntity::getMonitorStartTime,device.getStartTime())
|
|
|
@@ -148,9 +145,8 @@ public class DeviceInfoListener {
|
|
|
|
|
|
//所有事务处理完成后更新缓存信息
|
|
|
cacheOperation.forEach(Supplier::get);
|
|
|
+ log.info("设备数据处理耗时:{}",(System.currentTimeMillis()-startTime));
|
|
|
}
|
|
|
- log.info("结束处理时间------------------------[{}]",System.currentTimeMillis());
|
|
|
-
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -165,9 +161,6 @@ public class DeviceInfoListener {
|
|
|
String originClassify = deviceOperator.getClassification();
|
|
|
String classification = device.getClassification();
|
|
|
String usingId = deviceOperator.getUsingId();
|
|
|
- device.setIsUndo(deviceOperator.getUndo());
|
|
|
- //todo 这部分操作交由上游处理
|
|
|
- device.setTenantId(deviceOperator.getTenantId());
|
|
|
if(!classification.equals(originClassify)){
|
|
|
device.setNewInfusion(true);
|
|
|
//启动新的输注,则撤泵标识取消
|
|
|
@@ -223,6 +216,7 @@ public class DeviceInfoListener {
|
|
|
.set(device.isNewInfusion(),BusPatientEntity::getInfusionId,device.getInfusionId())
|
|
|
.set(BusPatientEntity::getAlarm, PatientAlarmEnum.NONE)
|
|
|
);
|
|
|
+ device.setMaster(true);
|
|
|
suppliers.add(()->{
|
|
|
wsPublishUtils.publishDeviceNone(device.getTenantId());
|
|
|
return null;
|
|
|
@@ -236,10 +230,12 @@ public class DeviceInfoListener {
|
|
|
.eq(BusPatientEntity::getTenantId,device.getTenantId())
|
|
|
.set(device.isNewInfusion(),BusPatientEntity::getInfusionId,device.getInfusionId()));
|
|
|
}
|
|
|
+ device.setMaster(true);
|
|
|
}
|
|
|
//更新泵所绑定当前病人缓存信息
|
|
|
suppliers.add(()->{
|
|
|
if(Boolean.TRUE.equals(device.getMaster())){
|
|
|
+ currentDeviceOperator.setMaster(true);
|
|
|
currentPatientOperator.setBindDeviceId(deviceId);
|
|
|
}
|
|
|
return null;
|
|
|
@@ -257,7 +253,7 @@ public class DeviceInfoListener {
|
|
|
private void handleConflictOriginPatient(String deviceId, String hospitalId, String patientCode, List<Supplier<?>> suppliers){
|
|
|
PatientOperator<PatientCacheInfo> patientOperator = patientRegistry.getOperator(hospitalId, patientCode);
|
|
|
//过滤掉已换绑的泵,获取剩余所绑定的泵数据
|
|
|
- List<BusDeviceRunningEntity> currentBindDevices = deviceRunningService.list(new QueryWrapper<BusDeviceRunningEntity>().lambda().eq(BusDeviceRunningEntity::getTenantId, patientCode)
|
|
|
+ List<BusDeviceRunningEntity> currentBindDevices = deviceRunningService.list(new QueryWrapper<BusDeviceRunningEntity>().lambda().eq(BusDeviceRunningEntity::getTenantId, hospitalId)
|
|
|
.eq(BusDeviceRunningEntity::getTenantId, hospitalId)
|
|
|
.ne(BusDeviceRunningEntity::getDeviceId, deviceId));
|
|
|
if(CollectionUtil.isEmpty(currentBindDevices)){
|
|
|
@@ -341,6 +337,9 @@ public class DeviceInfoListener {
|
|
|
.set(Boolean.TRUE.equals(device.getMaster()),BusPatientEntity::getInfusionId,device.getInfusionId())
|
|
|
.set(BusPatientEntity::getAlarm,PatientAlarmEnum.DEVICE_REPEAT));
|
|
|
suppliers.add(()->{
|
|
|
+ if(Boolean.TRUE.equals(device.getMaster())){
|
|
|
+ patientCurrentBindDevice.setMaster(false);
|
|
|
+ }
|
|
|
wsPublishUtils.publishDeviceRepeat(device.getTenantId());
|
|
|
return null;
|
|
|
});
|