Ver Fonte

feat:
设备换绑时设备输注信息自动切换

18339543638 há 2 anos atrás
pai
commit
1d00751904

+ 65 - 2
nb-service/web-service/src/main/java/com/nb/web/service/bus/service/LocalBusDeviceService.java

@@ -1,6 +1,7 @@
 package com.nb.web.service.bus.service;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
@@ -12,9 +13,14 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.nb.aliyun.api.service.AliyunIotSdk;
+import com.nb.web.api.entity.BusClinicEntity;
+import com.nb.web.api.entity.BusInfusionHistoryEntity;
 import com.nb.web.api.feign.IDeviceClient;
+import com.nb.web.api.feign.query.PatientMonitorQuery;
+import com.nb.web.api.feign.result.PatientMonitorResult;
 import com.nb.web.api.utils.Constants;
 import com.nb.web.api.bean.AliIotConfig;
+import com.nb.web.service.bus.entity.BusPatientEntity;
 import com.nb.web.service.bus.registry.constant.DeviceKeyConstant;
 import com.nb.web.service.bus.registry.device.DeviceRegistry;
 import com.nb.web.api.entity.BusDeviceEntity;
@@ -51,6 +57,17 @@ public class LocalBusDeviceService extends BaseService<BusDeviceMapper, BusDevic
     @Lazy
     private DeviceRegistry deviceRegistry;
 
+    @Autowired
+    @Lazy
+    private LocalBusPatientService patientService;
+
+    @Autowired
+    @Lazy
+    private LocalBusInfusionHistoryService infusionHistoryService;
+
+    @Autowired
+    @Lazy
+    private LocalBusClinicService clinicService;
     @Autowired
     private AliyunIotSdk aliyunIotSdk;
 
@@ -213,7 +230,8 @@ public class LocalBusDeviceService extends BaseService<BusDeviceMapper, BusDevic
     @Override
     public BusDeviceEntity getByDeviceId(String deviceId) {
         BusDeviceEntity device = getOne(new QueryWrapper<BusDeviceEntity>().lambda()
-                .eq(BusDeviceEntity::getDeviceId,deviceId));
+                .eq(BusDeviceEntity::getDeviceId,deviceId)
+                .last("limit 1"));
         return device;
     }
 
@@ -379,6 +397,51 @@ public class LocalBusDeviceService extends BaseService<BusDeviceMapper, BusDevic
         operators
                 .stream()
                 .filter(Objects::nonNull)
-                .forEach(deviceOperator -> deviceOperator.getCache().remove(DeviceKeyConstant.TENANT_ID));
+                .forEach(deviceOperator -> deviceOperator.getCache().clear());
+        //对进行中的输注进行换绑,其他医院切换到主医院不进行输注换绑
+        if ("1".equals(afterTenantId)) {
+            return;
+        }
+        List<PatientMonitorResult> results = patientService.selectAll(new PatientMonitorQuery());
+        if(CollectionUtil.isEmpty(results)){
+            return;
+        }
+        Map<String, PatientMonitorResult> deviceIdMap = results
+                .stream()
+                .collect(Collectors.groupingBy(PatientMonitorResult::getDeviceId, Collectors.collectingAndThen(Collectors.toList(), CollectionUtil::getFirst)));
+        //输注信息需要变化的设备
+        Collection<String> changeDeviceIds = CollectionUtil.intersection(deviceIdMap.keySet(), deviceIds);
+        if(CollectionUtil.isEmpty(changeDeviceIds)){
+            return;
+        }
+
+        List<PatientMonitorResult> patientMonitorResults = results
+                .stream()
+                .filter(patientMonitorResult -> changeDeviceIds.contains(patientMonitorResult.getDeviceId()))
+                .collect(Collectors.toList());
+        //输注切换
+        infusionHistoryService.update(new UpdateWrapper<BusInfusionHistoryEntity>().lambda()
+                .in(BusInfusionHistoryEntity::getId,patientMonitorResults
+                        .stream()
+                        .map(PatientMonitorResult::getInfusionId)
+                        .collect(Collectors.toList()))
+                .set(BusInfusionHistoryEntity::getTenantId,afterTenantId));
+
+
+        //病人切换
+        patientService.update(new UpdateWrapper<BusPatientEntity>().lambda()
+                .in(BusPatientEntity::getId,patientMonitorResults
+                        .stream()
+                        .map(PatientMonitorResult::getPatientId)
+                        .collect(Collectors.toList()))
+                .set(BusPatientEntity::getTenantId,afterTenantId));
+
+        //临床切换
+        clinicService.update(new UpdateWrapper<BusClinicEntity>().lambda()
+                .in(BusClinicEntity::getId,patientMonitorResults
+                        .stream()
+                        .map(PatientMonitorResult::getClinicId)
+                        .collect(Collectors.toList()))
+                .set(BusClinicEntity::getTenantId,afterTenantId));
     }
 }