|
|
@@ -3,9 +3,13 @@ package com.nb.web.service.bus.controller;
|
|
|
import cn.dev33.satoken.SaManager;
|
|
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
|
|
import cn.dev33.satoken.stp.StpLogic;
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
+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.BusDeviceHistoryEntity;
|
|
|
import com.nb.web.api.entity.BusInfusionHistoryEntity;
|
|
|
+import com.nb.web.service.bus.service.LocalBusDeviceHistoryService;
|
|
|
import com.nb.web.service.bus.service.LocalBusInfusionHistoryService;
|
|
|
import com.nb.web.service.bus.service.dto.CombineQuery;
|
|
|
import com.nb.web.service.bus.service.dto.CombineResult;
|
|
|
@@ -16,13 +20,14 @@ import com.nb.core.result.R;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
-import org.springframework.web.bind.annotation.PostMapping;
|
|
|
-import org.springframework.web.bind.annotation.RequestBody;
|
|
|
-import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
-import org.springframework.web.bind.annotation.RestController;
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.Arrays;
|
|
|
+import java.util.Comparator;
|
|
|
import java.util.List;
|
|
|
+import java.util.Optional;
|
|
|
+import java.util.concurrent.atomic.AtomicReference;
|
|
|
|
|
|
/**
|
|
|
* @author lifang
|
|
|
@@ -37,6 +42,7 @@ import java.util.List;
|
|
|
@Api(tags = "输注历史管理",description = "输注历史管理,查询操作权限【bus:infusion:query】")
|
|
|
public class BusInfusionHistoryController implements BaseQueryController<BusInfusionHistoryEntity, String> {
|
|
|
private final LocalBusInfusionHistoryService infusionHistoryService;
|
|
|
+ private final LocalBusDeviceHistoryService deviceHistoryService;
|
|
|
|
|
|
|
|
|
@Override
|
|
|
@@ -63,6 +69,26 @@ public class BusInfusionHistoryController implements BaseQueryController<BusInfu
|
|
|
return R.success(infusionHistoryService.queryPage(query,query.getPage()));
|
|
|
}
|
|
|
|
|
|
+ @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 = deviceHistoryService.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 String getPermissionPrefix() {
|