소스 검색

add 术前访视单

A17404李放 3 년 전
부모
커밋
af554f02b2

+ 31 - 0
nb-system/src/main/java/com/nb/bus/controller/BusClinicController.java

@@ -4,9 +4,11 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.nb.bus.controller.vo.ClinicStatsVo;
 import com.nb.bus.controller.vo.ClinicEditVo;
+import com.nb.bus.controller.vo.VisitRecord;
 import com.nb.bus.entity.*;
 import com.nb.bus.service.*;
 import com.nb.bus.service.dto.*;
@@ -17,10 +19,12 @@ import com.nb.common.result.R;
 import io.swagger.annotations.*;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.simpleframework.xml.Path;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.Set;
 import java.util.stream.Collectors;
 
@@ -182,6 +186,33 @@ public class BusClinicController {
         return R.success();
     }
 
+
+    @Log(title = "修改术前访视单")
+    @PostMapping("/edit/visit")
+    @SaCheckPermission("bus:clinic:edit")
+    @ApiOperation(value = "修改术前访视单",notes = "修改术前访视单,权限【bus:clinic:edit】")
+    public R<Boolean> editVisit(@RequestBody@Validated VisitRecord source){
+        return R.success( clinicService.update(new UpdateWrapper<BusClinicEntity>().lambda().eq(BusClinicEntity::getId,source.getClinicId())
+                .set(BusClinicEntity::getVisitRecord,source.getContent())));
+    }
+
+    @Log(title = "查看术前访视单")
+    @PostMapping("/look/visit/{clinicId}")
+    @SaCheckPermission("bus:clinic:query")
+    @ApiOperation(value = "查看术前访视单",notes = "查看术前访视单,权限【bus:clinic:query】")
+    public R<VisitRecord> queryVisit(@PathVariable("clinicId") String clinicId){
+        VisitRecord visitRecord = new VisitRecord();
+        visitRecord.setClinicId(clinicId);
+        visitRecord.setContent(
+                Optional.ofNullable(clinicService.getOne(new QueryWrapper<BusClinicEntity>().lambda().select(BusClinicEntity::getVisitRecord).eq(BusClinicEntity::getId,clinicId)))
+                        .orElse(new BusClinicEntity())
+                        .getVisitRecord()
+
+        );
+        return R.success(visitRecord);
+    }
+
+
     @Log(title = "查询病人信息详情")
     @PostMapping("/view/{id}")
     @SaCheckPermission("bus:clinic:query")

+ 22 - 0
nb-system/src/main/java/com/nb/bus/controller/vo/VisitRecord.java

@@ -0,0 +1,22 @@
+package com.nb.bus.controller.vo;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName VisitRecord.java
+ * @Description TODO
+ * @createTime 2022年07月08日 17:13:00
+ */
+@ApiModel("术前访视单")
+@Data
+public class VisitRecord {
+    @NotBlank(message = "临床id不能为空")
+    private String clinicId;
+    @NotBlank(message = "访视单内容不能为空")
+    private String content;
+}

+ 4 - 0
nb-system/src/main/java/com/nb/bus/entity/BusClinicEntity.java

@@ -143,4 +143,8 @@ public class BusClinicEntity extends TenantGenericEntity<String,String> {
     @ApiModelProperty("该临床的最后一次评价时间")
     private Date evalTime;
 
+    @ApiModelProperty("术前访视单")
+    @TableField(updateStrategy = FieldStrategy.NEVER)
+    private String visitRecord;
+
 }

+ 26 - 7
nb-system/src/main/java/com/nb/bus/stats/analyse/EvalStatsAnalyse.java

@@ -21,8 +21,10 @@ import lombok.AllArgsConstructor;
 import lombok.Data;
 import org.springframework.stereotype.Service;
 
+import javax.validation.constraints.NotNull;
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
 /**
@@ -241,14 +243,14 @@ public class EvalStatsAnalyse implements CommonStats<CombineEvalResult> {
         result.setColumn(allColumn);
         //根据时间区间对镇痛方式进行统计
         groupByTime.forEach((timeRange,combineResult)->{
-            BigDecimal totalSize = BigDecimal.valueOf(CollectionUtil.size(combineResult));
+            RatioResult ratioResult = computeEvalRatio(combineResult);
             //表格内容
             long evalCount = combineResult.stream().filter(r -> StrUtil.isNotEmpty(r.getEvalId())).count();
             LinkedHashMap<String, Object> contentValues = new LinkedHashMap<>();
             contentValues.put("时间",timeRange);
-            contentValues.put("输注次数",totalSize);
+            contentValues.put("输注次数",ratioResult.getTotalSize());
             contentValues.put("评价次数",evalCount);
-            contentValues.put("评价比率",computeRatio(BigDecimal.valueOf(evalCount),totalSize));
+            contentValues.put("评价比率",ratioResult.getRatio());
             //获取特定时间区间内
             EvalTableResult evalTableResult = new EvalTableResult();
             combineResult.stream()
@@ -347,10 +349,7 @@ public class EvalStatsAnalyse implements CommonStats<CombineEvalResult> {
 
         //根据时间区间对镇痛方式进行统计
         groupByTime.forEach((timeRange,combineResult)->{
-            BigDecimal totalSize = BigDecimal.valueOf(CollectionUtil.size(combineResult));
-            //获取特定时间区间内 评价次数
-            long evalCount = combineResult.stream().filter(r -> StrUtil.isNotEmpty(r.getEvalId())).count();
-            ratioLine.addValue(computeRatio(BigDecimal.valueOf(evalCount),totalSize));
+            ratioLine.addValue(computeEvalRatio(combineResult).getRatio());
             time.add(timeRange);
         });
 
@@ -547,9 +546,29 @@ public class EvalStatsAnalyse implements CommonStats<CombineEvalResult> {
 
 
 
+    private RatioResult computeEvalRatio(List<CombineEvalResult> results){
+        Map<String, List<CombineEvalResult>> resultMap = results.stream().collect(Collectors.groupingBy(CombineEvalResult::getId));
+        BigDecimal totalSize = BigDecimal.valueOf(CollectionUtil.size(resultMap.keySet()));
+        AtomicInteger evalCount=new AtomicInteger(0);
+        resultMap.forEach((id,evalResult)->{
+            if (evalResult.stream().anyMatch(r-> StrUtil.isNotEmpty(r.getEvalId()))) {
+                evalCount.addAndGet(1);
+            }
+        });
+        return    RatioResult.of(totalSize,BigDecimal.valueOf(evalCount.get()), computeRatio(totalSize,BigDecimal.valueOf(evalCount.get())));
 
+    }
 
     private BusHospitalConfigEntity evalConfig(){
         return  configService.getOne(new QueryWrapper<BusHospitalConfigEntity>().lambda().eq(BusHospitalConfigEntity::getType, ConfigEnum.eval));
     }
+
+    @Data
+    @AllArgsConstructor(staticName = "of")
+    static class RatioResult{
+        BigDecimal totalSize;
+        BigDecimal evalCount;
+        BigDecimal ratio;
+
+    }
 }