|
|
@@ -2,7 +2,9 @@ package com.nb.web.service.bus.controller;
|
|
|
|
|
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
|
|
import cn.dev33.satoken.annotation.SaMode;
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.mapper.Mapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.nb.web.api.entity.BusDeviceAlarmEntity;
|
|
|
@@ -23,7 +25,10 @@ import lombok.AllArgsConstructor;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.Comparator;
|
|
|
import java.util.List;
|
|
|
+import java.util.concurrent.atomic.AtomicReference;
|
|
|
|
|
|
/**
|
|
|
* @author lifang
|
|
|
@@ -76,6 +81,28 @@ public class BusDeviceHistoryController extends BaseCrudController<BusDeviceHist
|
|
|
return R.success(deviceAlarmService.selectUseDetail(query));
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ @PostMapping("/loss/rate/{infusionId}")
|
|
|
+ @SaCheckPermission({"bus:infusion:query","bus:device:use"})
|
|
|
+ @ApiOperation(value = "输注丢包率计算(此查询中包括了所属的临床信息)",notes = "权限【bus:infusion:query】")
|
|
|
+ public R<BigDecimal> lossRate(@PathVariable("infusionId")String infusionId){
|
|
|
+ List<BusDeviceHistoryEntity> histories = historyService.list(new QueryWrapper<BusDeviceHistoryEntity>()
|
|
|
+ .lambda()
|
|
|
+ .select(BusDeviceHistoryEntity::getDataNumber)
|
|
|
+ .eq(BusDeviceHistoryEntity::getInfusionId, infusionId));
|
|
|
+ AtomicReference<BigDecimal> result=new AtomicReference<>(BigDecimal.ZERO);
|
|
|
+ if(CollectionUtil.isNotEmpty(histories)){
|
|
|
+ histories.stream().map(BusDeviceHistoryEntity::getDataNumber)
|
|
|
+ .max(Comparator.comparing(Integer::byteValue))
|
|
|
+ .map(max->{
|
|
|
+ BigDecimal proportionRate = BigDecimal.valueOf(max).divide(BigDecimal.valueOf(CollectionUtil.size(histories)), 2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ result.set(BigDecimal.ONE.subtract(proportionRate).multiply(BigDecimal.valueOf(100)));
|
|
|
+ return max;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return R.success(result.get());
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public BaseService<? extends Mapper<BusDeviceHistoryEntity>, BusDeviceHistoryEntity, String> getService() {
|
|
|
return historyService;
|