浏览代码

Merge remote-tracking branch 'origin/local-slave' into local-slave

niu 1 年之前
父节点
当前提交
1ebefd5caa

+ 13 - 0
nb-common/ws-common/src/main/java/com/nb/common/websocket/WebSocketConstant.java

@@ -26,6 +26,8 @@ public class WebSocketConstant {
 
     public static final String DEVICE_NONE ="device-none";
 
+    public static final String FINISHED_CLINICID ="finished-clinicId";
+
     public static final String UNSUB_ALL ="all";
 
     public static final String IM ="im";
@@ -130,4 +132,15 @@ public class WebSocketConstant {
     public static TopicWrapper getDeviceNone(String tenantId){
         return getTopic(DEVICE_NONE,null,null,tenantId);
     }
+
+    /**
+     * 描述: 获取医院临床设备无绑定数量统计
+     * @author lifang
+     * @date 2022/5/13 9:50
+     * @param tenantId
+     * @return TopicWrapper
+     */
+    public static TopicWrapper getFinishedClinicId(String tenantId){
+        return getTopic(FINISHED_CLINICID,null,null,tenantId);
+    }
 }

+ 9 - 3
nb-service-api/web-service-api/src/main/java/com/nb/web/api/entity/BusClinicEntity.java

@@ -1,5 +1,6 @@
 package com.nb.web.api.entity;
 
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
 import com.nb.web.api.bean.FormulaDrugDomain;
@@ -26,7 +27,7 @@ import java.util.*;
 @EqualsAndHashCode(callSuper = true)
 @Data
 @TableName(value = "bus_clinic",autoResultMap = true)
-@ApiModel(value="病人临床手术信息", description="病人临床手术信息实体类")
+@ApiModel(value="病人临床手术信息", description="病人临git床手术信息实体类")
 @ToString
 public class BusClinicEntity extends TenantGenericEntity<String,String> {
 
@@ -82,13 +83,11 @@ public class BusClinicEntity extends TenantGenericEntity<String,String> {
     @ApiModelProperty(value = "体重")
     @Length(max = 255,message = "体重不得超过255个字节",groups = {Insert.class,Update.class})
     @TableField(updateStrategy = FieldStrategy.IGNORED)
-
     private String weight;
 
     @ApiModelProperty(value = "身高")
     @Length(max = 255,message = "身高不得超过255个字节",groups = {Insert.class,Update.class})
     @TableField(updateStrategy = FieldStrategy.IGNORED)
-
     private String height;
 
     @ApiModelProperty(value = "麻醉医生")
@@ -155,4 +154,11 @@ public class BusClinicEntity extends TenantGenericEntity<String,String> {
     @ApiModelProperty(value = "管理类型",allowableValues = "0(院内管理);1(居家管理)")
     private ClinicManageEnum manageType;
 
+    public String getWeight() {
+        return StrUtil.isBlank(weight)?null:weight;
+    }
+
+    public String getHeight() {
+        return StrUtil.isBlank(height)?null:height;
+    }
 }

+ 63 - 4
nb-service/web-service/src/main/java/com/nb/web/service/bus/controller/vo/BusClinicExcelVO.java

@@ -2,12 +2,14 @@ package com.nb.web.service.bus.controller.vo;
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.util.EnumUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.nb.core.enums.SexEnum;
 import com.nb.web.api.bean.FormulaDrugDetailDomain;
 import com.nb.web.api.bean.FormulaDrugDomain;
 import com.nb.web.api.entity.BusEvaluationEntity;
+import com.nb.web.api.entity.BusInfusionHistoryEntity;
 import lombok.Data;
 
 import java.math.BigDecimal;
@@ -85,6 +87,44 @@ public class BusClinicExcelVO {
     private String entrust;
 
 
+    /*************输注部分*********************/
+    private String infusionId;
+    @ExcelProperty(value = "输注开始时间",format = DatePattern.NORM_DATETIME_PATTERN)
+    private Date infusionStartTime;
+
+    @ExcelProperty(value = "总量")
+    private Integer totalDose;
+
+    @ExcelProperty(value = "首次量")
+    private Integer firstDose;
+
+    @ExcelProperty(value = "剩余量")
+    private BigDecimal remainDose;
+
+    @ExcelProperty(value = "已输入量")
+    private BigDecimal inputDose;
+
+    @ExcelProperty(value = "持续量")
+    private BigDecimal continueDose;
+
+    @ExcelProperty(value = "追加量")
+    private BigDecimal appendDose;
+
+    @ExcelProperty(value = "极限量")
+    private BigDecimal maxDose;
+
+    @ExcelProperty(value = "自控锁时")
+    private BigDecimal selfControlLockTime;
+
+    @ExcelProperty(value = "pca有效次数")
+    private Integer pcaValidCount;
+
+    @ExcelProperty(value = "pca无效次数")
+    private Integer pcaInvalidCount;
+
+    @ExcelProperty(value = "pca总按次数")
+    private Integer pcaTotalCount;
+
     /*************评价部分********************/
 
     @ExcelProperty(value = "疼痛静止评分")
@@ -167,9 +207,9 @@ public class BusClinicExcelVO {
 
     public void setPatientGender(String patientGender) {
         if(ObjectUtil.isNotNull(patientGender)){
-            SexEnum sexEnum = SexEnum.valueOf(patientGender);
+            SexEnum sexEnum = EnumUtil.likeValueOf(SexEnum.class,patientGender);
             if(ObjectUtil.isNull(sexEnum)){
-                this.patientGender = SexEnum.UNKNOW.getText();
+                this.patientGender = patientGender;
             }else {
                 this.patientGender = sexEnum.getText();
             }
@@ -186,15 +226,34 @@ public class BusClinicExcelVO {
                 FormulaDrugDetailDomain formulaDrugDetailDomain = CollectionUtil.get(detail, i);
                 content=content+formulaDrugDetailDomain.getName()+formulaDrugDetailDomain.getDose()+formulaDrugDetailDomain.getUnit();
                 if(i!=(detail.size()-1)){
-                    content=content+1;
+                    content=content+"+";
                 }
             }
         }
         return content;
     }
 
+    public void fillInfusion(BusInfusionHistoryEntity infusion){
+        if(ObjectUtil.isNull(infusion)){
+            return;
+        }
+        this.infusionId=infusion.getId();
+        this.infusionStartTime=infusion.getStartTime();
+        this.totalDose=infusion.getTotalDose();
+        this.firstDose=infusion.getFirstDose();
+        this.remainDose=infusion.getRemainDose();
+        this.inputDose=infusion.getInputDose();
+        this.continueDose=infusion.getContinueDose();
+        this.appendDose=infusion.getAppendDose();
+        this.maxDose=infusion.getMaxDose();
+        this.selfControlLockTime=infusion.getSelfControlLockTime();
+        this.pcaValidCount=infusion.getPcaValidCount();
+        this.pcaInvalidCount=infusion.getPcaInvalidCount();
+        this.pcaTotalCount=infusion.getPcaTotalCount();
+    }
+
 
-    public void parseEval(BusEvaluationEntity eval){
+    public void fillEval(BusEvaluationEntity eval){
         if(ObjectUtil.isNull(eval)){
             return;
         }

+ 32 - 11
nb-service/web-service/src/main/java/com/nb/web/service/bus/service/LocalBusClinicService.java

@@ -150,6 +150,9 @@ public class LocalBusClinicService extends BaseService<BusClinicMapper, BusClini
                     SpringUtil.publishEvent(event);
                 });
         wsPublishUtils.publishMonitorTotalCount(tenantId);
+        if(CollectionUtil.isNotEmpty(clinicIds)){
+            wsPublishUtils.publishFinishedClinicId(clinicIds,tenantId);
+        }
     }
 
     /**
@@ -327,35 +330,53 @@ public class LocalBusClinicService extends BaseService<BusClinicMapper, BusClini
      * @return
      */
     public String  exportExcelSourceListBase64(Collection<String> clinicIds) throws IOException {
+        List<BusClinicExcelVO> result =new ArrayList<>();
         if(CollectionUtil.isEmpty(clinicIds)){
-            return ExportExcelUtils.exportClinicExcelBase64(new ArrayList<>());
+            return ExportExcelUtils.exportClinicExcelBase64(result);
         }
         List<BusClinicEntity> clinicList = this.baseMapper.selectList(new LambdaQueryWrapper<BusClinicEntity>()
                 .in(BusClinicEntity::getId, clinicIds));
         if(CollectionUtil.isEmpty(clinicList)){
-            return ExportExcelUtils.exportClinicExcelBase64(new ArrayList<>());
+            return ExportExcelUtils.exportClinicExcelBase64(result);
         }
-        List<BusClinicExcelVO> result =new ArrayList<>();
+
+        //输注历史
+        List<BusInfusionHistoryEntity> infusionHistories = this.infusionHistoryMapper.selectList(new LambdaQueryWrapper<BusInfusionHistoryEntity>()
+                .in(BusInfusionHistoryEntity::getClinicId, clinicIds)
+                .orderByDesc(BusInfusionHistoryEntity::getStartTime));
+        Map<String, List<BusInfusionHistoryEntity>> infusionMap = infusionHistories.stream()
+                .collect(Collectors.groupingBy(BusInfusionHistoryEntity::getClinicId));
+
         List<BusEvaluationEntity> evals = evaluationMapper.selectList(new LambdaQueryWrapper<BusEvaluationEntity>()
                 .in(BusEvaluationEntity::getClinicId, clinicIds)
                 .orderByDesc(BusEvaluationEntity::getEvaluateTime));
+
         Map<String, List<BusEvaluationEntity>> clinicMap = evals.stream()
-                .collect(Collectors.groupingBy(BusEvaluationEntity::getClinicId));
+                .collect(Collectors.groupingBy(BusEvaluationEntity::getInfusionId));
 
         for (BusClinicEntity clinicEntity : clinicList) {
-            List<BusEvaluationEntity> excelEvals = clinicMap.get(clinicEntity.getId());
-            if (CollectionUtil.isNotEmpty(excelEvals)) {
-                for (BusEvaluationEntity excelEval : excelEvals) {
+            List<BusInfusionHistoryEntity> infusions = infusionMap.get(clinicEntity.getId());
+            if (CollectionUtil.isNotEmpty(infusions)) {
+                for (BusInfusionHistoryEntity infusion : infusions) {
                     BusClinicExcelVO clinicExcel = BeanUtil.copyProperties(clinicEntity, BusClinicExcelVO.class);
-                    clinicExcel.parseEval(excelEval);
-                    result.add(clinicExcel);
+                    clinicExcel.fillInfusion(infusion);
+
+                    List<BusEvaluationEntity> excelEvals = clinicMap.get(infusion.getId());
+                    if (CollectionUtil.isNotEmpty(excelEvals)) {
+                        for (BusEvaluationEntity excelEval : excelEvals) {
+                            BusClinicExcelVO excelExec = BeanUtil.copyProperties(clinicExcel, BusClinicExcelVO.class);
+                            excelExec.fillEval(excelEval);
+                            result.add(excelExec);
+                        }
+                    }else {
+                        result.add(clinicExcel);
+                    }
                 }
             }else {
                 BusClinicExcelVO clinicExcel = BeanUtil.copyProperties(clinicEntity, BusClinicExcelVO.class);
                 result.add(clinicExcel);
             }
         }
-
-      return ExportExcelUtils.exportClinicExcelBase64(result);
+        return ExportExcelUtils.exportClinicExcelBase64(result);
     }
 }

+ 16 - 1
nb-service/web-service/src/main/java/com/nb/web/service/bus/utils/WsPublishUtils.java

@@ -16,10 +16,10 @@ import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.scheduling.annotation.Async;
-import org.springframework.stereotype.Component;
 import org.springframework.util.Assert;
 
 import java.io.Serializable;
+import java.util.Collection;
 
 /**
  * @author lifang
@@ -149,5 +149,20 @@ public class WsPublishUtils implements Serializable{
         );
     }
 
+    /**
+     * 描述: 推送结束管理的临床id
+     * @author lifang
+     * @date 2022/5/13 9:39
+     * @param
+     * @return void
+     */
+    public void publishFinishedClinicId(Collection<String> clinicIds,String tenantId){
+        Assert.hasText(tenantId,"医院id不能为空");
+        JSONObject message = new JSONObject().putOpt("clinicIds",clinicIds);
+        this.publish(WebSocketConstant.getFinishedClinicId(tenantId).getTopic(),
+                TopicMessage.of(message,tenantId)
+        );
+    }
+
 
 }

二进制
nb-service/web-service/src/main/resources/export/clinicExcel.xlsx