A17404李放 3 lat temu
rodzic
commit
5f89224544
19 zmienionych plików z 153 dodań i 58 usunięć
  1. 0 1
      coffee-admin/src/main/java/com/coffee/admin/AdminApplication.java
  2. 17 1
      coffee-admin/src/test/java/com/coffee/admin/BusClinicTest.java
  3. 4 1
      coffee-framework/src/main/java/com/coffee/framework/config/mybatisplus/MybatisPlusConfig.java
  4. 2 2
      coffee-system/src/main/java/com/coffee/bus/controller/BusDeviceHistoryController.java
  5. 3 3
      coffee-system/src/main/java/com/coffee/bus/controller/BusPatientController.java
  6. 5 4
      coffee-system/src/main/java/com/coffee/bus/hospital/his/strategy/all/LessToMoreHisStrategyHandler.java
  7. 5 4
      coffee-system/src/main/java/com/coffee/bus/hospital/his/strategy/all/MoreToLessHisStrategyHandler.java
  8. 58 7
      coffee-system/src/main/java/com/coffee/bus/hospital/his/strategy/part/DefaultHisPartStrategyHandler.java
  9. 9 0
      coffee-system/src/main/java/com/coffee/bus/mapper/BusInfusionHistoryMapper.java
  10. 0 11
      coffee-system/src/main/java/com/coffee/bus/registry/patient/ClusterPatientOperator.java
  11. 0 1
      coffee-system/src/main/java/com/coffee/bus/registry/patient/ClusterPatientRegistry.java
  12. 0 10
      coffee-system/src/main/java/com/coffee/bus/registry/patient/PatientOperator.java
  13. 0 10
      coffee-system/src/main/java/com/coffee/bus/service/LocalBusClinicService.java
  14. 11 0
      coffee-system/src/main/java/com/coffee/bus/service/LocalBusInfusionHistoryService.java
  15. 10 0
      coffee-system/src/main/java/com/coffee/bus/service/LocalBusPatientService.java
  16. 2 0
      coffee-system/src/main/java/com/coffee/bus/service/dto/PatientMonitorResult.java
  17. 0 1
      coffee-system/src/main/java/com/coffee/bus/websocket/listener/DeviceInfoListener.java
  18. 16 0
      coffee-system/src/main/resources/mapper/bus/BusInfusionHistoryMapper.xml
  19. 11 2
      coffee-system/src/main/resources/mapper/bus/BusPatientMapper.xml

+ 0 - 1
coffee-admin/src/main/java/com/coffee/admin/AdminApplication.java

@@ -22,7 +22,6 @@ import org.tio.websocket.starter.EnableTioWebSocketServer;
 @EnableScheduling
 @EnableAsync
 @ServletComponentScan(basePackages = "com.coffee.common.config")
-@EnableTransactionManagement
 public class AdminApplication {
 
     public static void main(String[] args) {

+ 17 - 1
coffee-admin/src/test/java/com/coffee/admin/BusClinicTest.java

@@ -3,11 +3,15 @@ package com.coffee.admin;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.json.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.coffee.bus.controller.vo.ClinicStatsVo;
+import com.coffee.bus.entity.BusClinicEntity;
 import com.coffee.bus.entity.BusDeviceRunningEntity;
+import com.coffee.bus.entity.BusDocEntity;
 import com.coffee.bus.entity.BusInfusionHistoryEntity;
 import com.coffee.bus.listener.event.bean.DeviceInfoEvent;
 import com.coffee.bus.service.LocalBusClinicService;
+import com.coffee.bus.service.LocalBusDocService;
 import com.coffee.bus.service.LocalBusInfusionHistoryService;
 import com.coffee.bus.service.dto.ClinicStatsReturnResult;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -22,6 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.ApplicationContext;
 import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 import java.util.Map;
@@ -45,7 +50,8 @@ public class BusClinicTest {
     private ObjectMapper objectMapper;
     @Autowired
     private LocalBusInfusionHistoryService infusionHistoryService;
-
+@Autowired
+private LocalBusDocService docService;
     @Test
     public void stats(){
         ClinicStatsVo clinicStatsVo = new ClinicStatsVo();
@@ -83,4 +89,14 @@ public class BusClinicTest {
     }
 
 
+    @Test
+    @Transactional(rollbackFor = ArithmeticException.class)
+    public void test(){
+        clinicService.update(new UpdateWrapper<BusClinicEntity>().lambda().eq(BusClinicEntity::getId,"1528668113304244226")
+        .set(BusClinicEntity::getSurgeryName,"临床数据5"));
+        docService.update(new UpdateWrapper<BusDocEntity>().lambda().eq(BusDocEntity::getId,"1512720050274963458")
+        .set(BusDocEntity::getType,"about1"));
+        int i=1/0;
+    }
+
 }

+ 4 - 1
coffee-framework/src/main/java/com/coffee/framework/config/mybatisplus/MybatisPlusConfig.java

@@ -17,7 +17,6 @@ import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInt
 import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.pagination.dialects.MySqlDialect;
-import com.coffee.common.Constants;
 import com.coffee.common.bo.LoginUser;
 import com.coffee.common.entity.TenantGenericEntity;
 import com.coffee.common.util.SecurityUtil;
@@ -30,10 +29,14 @@ import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.jdbc.datasource.DataSourceTransactionManager;
 import org.springframework.mock.web.MockHttpServletRequest;
+import org.springframework.transaction.PlatformTransactionManager;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.sql.DataSource;
 import java.util.*;
 import java.util.stream.Collectors;
 

+ 2 - 2
coffee-system/src/main/java/com/coffee/bus/controller/BusDeviceHistoryController.java

@@ -57,8 +57,8 @@ public class BusDeviceHistoryController extends BaseCrudController<BusDeviceHist
     }
 
     @PostMapping("/deviceUse")
-    @SaCheckPermission("bus:deviceUse")
-    @ApiOperation(value = "设备使用查询",notes = "权限:【bus:deviceUse】")
+    @SaCheckPermission("bus:device:use")
+    @ApiOperation(value = "设备使用查询",notes = "权限:【bus:device:use】")
     public R<List<DeviceUse>> deviceUse(@RequestBody @Validated DeviceAlarmQuery query){
         return R.success(deviceAlarmService.selectCountAlarm(query));
     }

+ 3 - 3
coffee-system/src/main/java/com/coffee/bus/controller/BusPatientController.java

@@ -265,9 +265,9 @@ public class BusPatientController  implements BaseQueryController<BusPatientEnti
             throw new CustomException("该临床信息不存在,请刷新后重试");
         }
         if(haveDevice){
-            BusInfusionHistoryEntity infusion = infusionService.getOne(new QueryWrapper<BusInfusionHistoryEntity>().lambda().eq(BusInfusionHistoryEntity::getClinicId,clinic.getId())
-                    .orderByDesc(BusInfusionHistoryEntity::getStartTime).last("limit 1"));
-            infusion.setAlias(deviceRunningService.getAliasName(infusion.getDeviceId()));
+            BusInfusionHistoryEntity infusion =infusionService.currentInClinic(clinic.getId());
+//            BusInfusionHistoryEntity infusion = infusionService.getOne(new QueryWrapper<BusInfusionHistoryEntity>().lambda().eq(BusInfusionHistoryEntity::getClinicId,clinic.getId())
+//                    .orderByDesc(BusInfusionHistoryEntity::getStartTime).last("limit 1"));
             result.setInfusion(infusion);
             if(StrUtil.isNotEmpty(infusion.getClinicId())){
                 result.setClinic(clinicService.getById(infusion.getClinicId()));

+ 5 - 4
coffee-system/src/main/java/com/coffee/bus/hospital/his/strategy/all/LessToMoreHisStrategyHandler.java

@@ -44,11 +44,12 @@ public class LessToMoreHisStrategyHandler implements HisAllStrategyHandler {
             return;
         }
         log.info("拉取his数据少于数据库数据,拉取手术信息{},数据库数据{}", JSONUtil.toJsonStr(source),JSONUtil.toJsonStr(target));
-        source.sort(Comparator.comparing(BusClinicEntity::getStartTime));
-        target.sort(Comparator.comparing(BusClinicEntity::getStartTime));
+        source.sort((t1,t2)->t2.getStartTime().compareTo(t1.getStartTime()));
+        target.sort((t1,t2)->t2.getStartTime().compareTo(t1.getStartTime()));
         int totalSize = source.size();
-        for (; totalSize >0; totalSize--) {
-            clinicService.compareFromHis(source.get(totalSize-1),target.get(totalSize-1));
+        for (int i = 0; i < totalSize; i++) {
+            clinicService.compareFromHis(source.get(i),target.get(i));
+
         }
     }
 

+ 5 - 4
coffee-system/src/main/java/com/coffee/bus/hospital/his/strategy/all/MoreToLessHisStrategyHandler.java

@@ -5,6 +5,7 @@ import cn.hutool.json.JSONUtil;
 import com.coffee.bus.entity.BusClinicEntity;
 import com.coffee.bus.service.LocalBusClinicService;
 import com.coffee.bus.service.LocalBusInfusionHistoryService;
+import com.coffee.bus.utils.WsPublishUtils;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
@@ -28,6 +29,7 @@ import java.util.*;
 public class MoreToLessHisStrategyHandler implements HisAllStrategyHandler {
     private final LocalBusClinicService clinicService;
     private final LocalBusInfusionHistoryService infusionHistoryService;
+    private final WsPublishUtils wsPublishUtils;
     @Override
     public String getId() {
         return "more-to-less";
@@ -76,10 +78,9 @@ public class MoreToLessHisStrategyHandler implements HisAllStrategyHandler {
             insert.get(i).setMonitorType(true);
         }
         insert.forEach(clinicService::insertFromHis);
-        clinicService.setCurrentClinicByHis( CollectionUtil.getFirst(insert.iterator()));
-        System.out.println(1 / 0);
-
-
+        BusClinicEntity currentClinic = CollectionUtil.getFirst(insert.iterator());
+        clinicService.setCurrentClinicByHis(currentClinic);
+        wsPublishUtils.publishMonitorTotalCount(currentClinic.getTenantId());
     }
 
     @Override

+ 58 - 7
coffee-system/src/main/java/com/coffee/bus/hospital/his/strategy/part/DefaultHisPartStrategyHandler.java

@@ -2,6 +2,7 @@ package com.coffee.bus.hospital.his.strategy.part;
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.coffee.bus.entity.BusClinicEntity;
 import com.coffee.bus.hospital.his.strategy.all.HisAllStrategyHandler;
 import com.coffee.bus.hospital.his.strategy.onlynew.HisNewStrategyHandler;
@@ -43,11 +44,12 @@ public class DefaultHisPartStrategyHandler implements HisNewStrategyHandler {
         if(CollectionUtil.isEmpty(source)){
             return;
         }
+        //source.size()<target.size()
         log.info("拉取his只获取一部分病人数据,拉取手术信息{},数据库数据{}", JSONUtil.toJsonStr(source),JSONUtil.toJsonStr(target));
         source.sort(Comparator.comparing(BusClinicEntity::getStartTime));
         if(CollectionUtil.isEmpty(target)){
             //只插入
-            insert(source);
+            insert(target);
         }else {
             //his拉取数据中最早的手术开始时间
             BusClinicEntity earliest = source.get(0);
@@ -66,21 +68,70 @@ public class DefaultHisPartStrategyHandler implements HisNewStrategyHandler {
                 }
             }
             if(start>=target.size()){
+                //所拉取his数据开始时间全部大于数据库存储时间
+                clinicService.update(new UpdateWrapper<BusClinicEntity>().lambda()
+                        .eq(BusClinicEntity::getPatientCode,earliest.getPatientCode())
+                        .eq(BusClinicEntity::getTenantId,earliest.getTenantId())
+                        .set(BusClinicEntity::getFinished,true));
                 insert(source);
             }else {
                 //走全处理的逻辑
-                List<BusClinicEntity> existClinics = target.subList(start, target.size());
-                allStrategyHandlers.stream()
-                        .filter(handler->handler.apply(source,existClinics))
-                        .forEach(handler->handler.handle(source,existClinics));
+                List<BusClinicEntity> subTargets = target.subList(start, target.size());
+                compareHandler(source,subTargets);
             }
         }
+    }
+
+    /**
+     * 描述: 仅比较his拉取数据与部分存储数据,同样按照手术场次进行比较
+     * @author lifang
+     * @date 2022/5/23 21:13
+     * His数据  一 、 二、 三、 四
+     *               ||   ||   || 比较
+     * 存储           一、 二、 三
+     * @param source
+     * @param subTarget
+     * @return void
+     */
+    private void compareHandler(List<BusClinicEntity> source,List<BusClinicEntity> subTarget){
+        source.sort((t1,t2)->t2.getStartTime().compareTo(t1.getStartTime()));
+        subTarget.sort((t1,t2)->t2.getStartTime().compareTo(t1.getStartTime()));
+        int sourceSize = CollectionUtil.size(source);
+        int subTargetSize = CollectionUtil.size(subTarget);
+        int subSize=Math.abs(Math.subtractExact(sourceSize,subTargetSize));
+        int minSize=Math.min(sourceSize,subTargetSize);
+        for (int i = minSize-1; i >=0; i--) {
+            //比较相同场次的手术,从最大到最小开始比较
+            if(sourceSize>subTargetSize){
+                clinicService.compareFromHis(source.get(subSize+i),subTarget.get(i));
+            }else {
+                clinicService.compareFromHis(source.get(i),subTarget.get(i+subSize));
+            }
+        }
+        if (minSize < CollectionUtil.size(source)) {
+            BusClinicEntity first = CollectionUtil.getFirst(source.iterator());
+            clinicService.update(new UpdateWrapper<BusClinicEntity>().lambda()
+                    .eq(BusClinicEntity::getPatientCode,first.getPatientCode())
+                    .eq(BusClinicEntity::getTenantId,first.getTenantId())
+                    .set(BusClinicEntity::getFinished,true));
+            insert(source.subList(0,minSize));
+        }
 
     }
 
+
     private void insert(List<BusClinicEntity> source){
-        source.forEach(clinicService::insertFromHis);
-        clinicService.setCurrentClinicByHis(source.get(source.size()-1));
+        source.sort((t1,t2)->t2.getStartTime().compareTo(t1.getStartTime()));
+        for (int i = 0; i < source.size(); i++) {
+            BusClinicEntity clinic = source.get(i);
+            if(i==0){
+                clinic.setFinished(false);
+            }else {
+                clinic.setFinished(true);
+            }
+            clinicService.insertFromHis(clinic);
+        }
+        clinicService.setCurrentClinicByHis(CollectionUtil.getFirst(source.iterator()));
     }
 
     @Override

+ 9 - 0
coffee-system/src/main/java/com/coffee/bus/mapper/BusInfusionHistoryMapper.java

@@ -3,6 +3,7 @@ package com.coffee.bus.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.coffee.bus.entity.BusInfusionHistoryEntity;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
 /**
@@ -15,4 +16,12 @@ import org.apache.ibatis.annotations.Select;
 @Mapper
 public interface BusInfusionHistoryMapper extends BaseMapper<BusInfusionHistoryEntity> {
 
+    /**
+     * 描述: 获取所给临床信息最新一条输注记录
+     * @author lifang
+     * @date 2022/5/23 21:40
+     * @param clinicId
+     * @return BusInfusionHistoryEntity
+     */
+    BusInfusionHistoryEntity currentInClinic(@Param("clinicId")String clinicId);
 }

+ 0 - 11
coffee-system/src/main/java/com/coffee/bus/registry/patient/ClusterPatientOperator.java

@@ -105,17 +105,6 @@ public class ClusterPatientOperator implements PatientOperator<PatientCacheInfo>
         return getValue(PatientKeyConstant.BED_NO).as(String.class);
     }
 
-    @Override
-    public Boolean getFinished() {
-        return getValue(PatientKeyConstant.FINISHED).as(Boolean.class);
-    }
-
-    @Override
-    public void setFinished(Boolean finished) {
-        configStorage.setConfig(PatientKeyConstant.FINISHED,finished);
-    }
-
-
     @Override
     public void setStartTime(Date startTime) {
         configStorage.setConfig(PatientKeyConstant.START_TIME,startTime);

+ 0 - 1
coffee-system/src/main/java/com/coffee/bus/registry/patient/ClusterPatientRegistry.java

@@ -107,7 +107,6 @@ public class ClusterPatientRegistry implements PatientRegistry {
                     clinic.setFinished(true);
                 }
             }
-            patientOperator.setFinished(clinic.getFinished());
             //填充主副泵信息
             List<BusDeviceRunningEntity> runningList = deviceRunningService.list(new QueryWrapper<BusDeviceRunningEntity>().lambda().eq(BusDeviceRunningEntity::getPatientCode, patientCode).eq(BusDeviceRunningEntity::getTenantId, hospitalId));
             if (CollectionUtil.isNotEmpty(runningList)) {

+ 0 - 10
coffee-system/src/main/java/com/coffee/bus/registry/patient/PatientOperator.java

@@ -98,16 +98,6 @@ public interface PatientOperator<T> extends Operator<T> {
      * @return
      */
     String getBedNo();
-    /**
-     * 判断当前临床是否结束
-     * @return
-     */
-    Boolean getFinished();
-
-    /**
-     * 设置当前临床是否结束
-     */
-    void setFinished(Boolean finished);
 
     /**
      * 设置临床开始时间

+ 0 - 10
coffee-system/src/main/java/com/coffee/bus/service/LocalBusClinicService.java

@@ -73,11 +73,6 @@ public class LocalBusClinicService extends BaseService<BusClinicMapper, BusClini
 
     }
 
-    @Override
-    public boolean save(BusClinicEntity entity) {
-        return super.save(entity);
-    }
-
     /**
      * 结束当前医院病号的临床数据
      * @param clinicId 临床id
@@ -98,11 +93,6 @@ public class LocalBusClinicService extends BaseService<BusClinicMapper, BusClini
                 .in(BusClinicEntity::getId,clinicIds)
                 .set(BusClinicEntity::getFinished,true)
                 .set(BusClinicEntity::getEndTime,finishTime));
-        //更新病人缓存
-        this.listByIds(clinicIds).stream()
-                .map(BusClinicEntity::getPatientCode)
-                .map(code->patientRegistry.getOperator(tenantId,code))
-                .forEach(operator->operator.setFinished(true));
         wsPublishUtils.publishMonitorTotalCount(tenantId);
     }
 

+ 11 - 0
coffee-system/src/main/java/com/coffee/bus/service/LocalBusInfusionHistoryService.java

@@ -184,4 +184,15 @@ public class LocalBusInfusionHistoryService extends BaseService<BusInfusionHisto
         }
 
     }
+
+    /**
+     * 描述: 获取所给临床id的最新输注信息
+     * @author lifang
+     * @date 2022/5/23 21:34
+     * @param clinicId
+     * @return BusInfusionHistoryEntity
+     */
+    public BusInfusionHistoryEntity currentInClinic(String clinicId) {
+        return this.baseMapper.currentInClinic(clinicId);
+    }
 }

+ 10 - 0
coffee-system/src/main/java/com/coffee/bus/service/LocalBusPatientService.java

@@ -244,6 +244,16 @@ public class LocalBusPatientService extends BaseService<BusPatientMapper, BusPat
         }
     }
 
+    /**
+     * 根据病号查询临床监控记录
+     * @author lifang
+     * @param patientCode 病号
+     * @return
+     */
+    public PatientMonitorResult lookMonitorByPatientCode(String patientCode) {
+        return lookMonitorByPatientCode(patientCode, null);
+    }
+
     /**
      * 描述: 设备状态数量统计
      * @author lifang

+ 2 - 0
coffee-system/src/main/java/com/coffee/bus/service/dto/PatientMonitorResult.java

@@ -1,6 +1,8 @@
 package com.coffee.bus.service.dto;
 
 import cn.hutool.core.util.StrUtil;
+import com.coffee.bus.entity.BusHospitalConfigEntity;
+import com.coffee.bus.entity.BusInfusionHistoryEntity;
 import com.coffee.bus.enums.*;
 import com.coffee.common.enums.SexEnum;
 import com.fasterxml.jackson.annotation.JsonIgnore;

+ 0 - 1
coffee-system/src/main/java/com/coffee/bus/websocket/listener/DeviceInfoListener.java

@@ -424,7 +424,6 @@ public class DeviceInfoListener {
                                 .set(BusClinicEntity::getFinished,false));
                 cacheOperation.add(()->{
                     //重启临床
-                    patientOperator.setFinished(false);
                     wsPublishUtils.publishMonitorTotalCount(device.getTenantId());
                     return null;
                 });

+ 16 - 0
coffee-system/src/main/resources/mapper/bus/BusInfusionHistoryMapper.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.coffee.bus.mapper.BusInfusionHistoryMapper">
+
+
+    <select id="currentInClinic" resultType="com.coffee.bus.entity.BusInfusionHistoryEntity">
+        select d.alias,i.* from
+            (select * from bus_infusion_history where clinic_id=#{clinicId} ORDER BY start_time limit 1) as i
+            left join bus_device  as d on d.device_id=i.device_id
+    </select>
+
+
+
+
+
+</mapper>

+ 11 - 2
coffee-system/src/main/resources/mapper/bus/BusPatientMapper.xml

@@ -207,7 +207,7 @@
             </where>
             )
             as p
-            join
+            left join
             (select * from bus_infusion_history
             <where>
                 is_undo='0'
@@ -362,7 +362,16 @@
             c.surgery_doctor as surgery_doctor,
             c.surgery_name as surgery_name
             from
-            (select * from bus_patient where tenant_id=#{tenantId} and code=#{patientCode} )
+            (select * from bus_patient
+            <where>
+                <if test="tenantId!=null">
+                    and tenant_id=#{tenantId}
+                </if>
+                <if test="patientCode!=null">
+                    and code=#{patientCode}
+                </if>
+            </where>
+            )
             as p
             join
               bus_infusion_history as i on p.infusion_id=i.id