Przeglądaj źródła

实现输注信息折线图

wangzl 3 miesięcy temu
rodzic
commit
077b869a3d

+ 7 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/IBizDeviceService.java

@@ -5,6 +5,7 @@ import cn.tr.module.smart.common.dto.BizDeviceQueryDTO;
 import cn.tr.module.smart.web.dto.BizDeviceAlarmInfoDTO;
 import cn.tr.module.smart.web.dto.BizDeviceBindClinicDTO;
 import cn.tr.module.smart.web.vo.BizDeviceDetailVO;
+import cn.tr.module.smart.web.vo.BizInfusionLineVO;
 
 import java.util.List;
 
@@ -42,4 +43,10 @@ public interface IBizDeviceService {
     List<BizDeviceAlarmInfoDTO> queryAlarmInfo(String infusionId);
 
     Boolean bindClinic(BizDeviceBindClinicDTO source);
+    /**
+     * @description: 根据输注ID查询泵输注折线图
+     * @author wangzl
+     * @date 2025/8/11
+     */
+    BizInfusionLineVO queryInfusionGraph(String infusionId);
 }

+ 36 - 4
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/impl/BizDeviceServiceImpl.java

@@ -1,5 +1,8 @@
 package cn.tr.module.smart.common.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.tr.core.exception.ServiceException;
 import cn.tr.core.exception.TRExcCode;
@@ -9,24 +12,27 @@ import cn.tr.module.smart.common.enums.InfusionBindType;
 import cn.tr.module.smart.common.mapper.BizDeviceAlarmMapper;
 import cn.tr.module.smart.common.mapper.BizInfusionHistoryMapper;
 import cn.tr.module.smart.common.po.BizDeviceAlarmPO;
+import cn.tr.module.smart.common.po.BizDeviceHistoryPO;
 import cn.tr.module.smart.common.po.BizDevicePO;
 import cn.tr.module.smart.common.po.BizInfusionClinicPO;
 import cn.tr.module.smart.common.repository.BizDeviceAlarmRepository;
+import cn.tr.module.smart.common.repository.BizDeviceHistoryRepository;
 import cn.tr.module.smart.common.repository.BizDeviceRepository;
 import cn.tr.module.smart.common.repository.BizInfusionClinicRepository;
 import cn.tr.module.smart.common.service.IBizDeviceService;
 import cn.tr.module.smart.web.dto.BizDeviceAlarmInfoDTO;
 import cn.tr.module.smart.web.dto.BizDeviceAndClinicDetailQueryDTO;
 import cn.tr.module.smart.web.dto.BizDeviceBindClinicDTO;
-import cn.tr.module.smart.web.vo.BizDeviceAndClinicDetailVO;
-import cn.tr.module.smart.web.vo.BizDeviceDetailVO;
-import cn.tr.module.smart.web.vo.BizDeviceInfoVO;
-import cn.tr.module.smart.web.vo.BizInfusionInfoVO;
+import cn.tr.module.smart.web.vo.*;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @author wangzl
@@ -44,6 +50,9 @@ public class BizDeviceServiceImpl implements IBizDeviceService {
 
     @Autowired
     private BizInfusionClinicRepository infusionClinicRepository;
+
+    @Autowired
+    private BizDeviceHistoryRepository bizDeviceHistoryRepository;
     /**
      * @param query 查询参数
      * @description: 根据条件查询泵设备列表
@@ -133,4 +142,27 @@ public class BizDeviceServiceImpl implements IBizDeviceService {
         infusionClinicPO.setDeviceId(source.getDeviceId());
         return infusionClinicRepository.insert(infusionClinicPO)!=0;
     }
+
+    /**
+     * @param infusionId
+     * @description: 根据输注ID查询泵输注折线图
+     * @author wangzl
+     * @date 2025/8/11
+     */
+    @Override
+    public BizInfusionLineVO queryInfusionGraph(String infusionId) {
+        List<BizDeviceHistoryPO> bizDeviceHistoryPOS = bizDeviceHistoryRepository.selectList(new LambdaQueryWrapper<BizDeviceHistoryPO>()
+                .eq(BizDeviceHistoryPO::getInfusionId, infusionId));
+        if(CollectionUtil.isEmpty(bizDeviceHistoryPOS)){
+            return new BizInfusionLineVO();
+        }
+        return bizDeviceHistoryPOS.stream().collect(Collectors.collectingAndThen(Collectors.toList(), list -> {
+            BizInfusionLineVO bizInfusionLineVO = new BizInfusionLineVO();
+            bizInfusionLineVO.setInputDose(list.stream().map(BizDeviceHistoryPO::getInputDose).collect(Collectors.toList()));
+            bizInfusionLineVO.setValidCount(list.stream().map(BizDeviceHistoryPO::getPcaValidCount).collect(Collectors.toList()));
+            bizInfusionLineVO.setInValidCount(list.stream().map(BizDeviceHistoryPO::getPcaInvalidCount).collect(Collectors.toList()));
+            bizInfusionLineVO.setUploadTime(list.stream().map(history -> DateUtil.format(history.getLastUploadTime(), DatePattern.NORM_DATETIME_PATTERN)).collect(Collectors.toList()));
+            return bizInfusionLineVO;
+        }));
+    }
 }

+ 3 - 2
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/web/controller/BizDeviceController.java

@@ -11,6 +11,7 @@ import cn.tr.module.smart.web.dto.BizDeviceAlarmInfoDTO;
 import cn.tr.module.smart.web.dto.BizDeviceBindClinicDTO;
 import cn.tr.module.smart.web.vo.BizDeviceAndClinicDetailVO;
 import cn.tr.module.smart.web.vo.BizDeviceDetailVO;
+import cn.tr.module.smart.web.vo.BizInfusionLineVO;
 import cn.tr.module.sys.oauth2.LoginTypeConstant;
 import cn.tr.plugin.mybatis.base.BaseController;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
@@ -70,8 +71,8 @@ public class BizDeviceController extends BaseController {
     @ApiOperationSupport(author = "wangzl", order = 5)
     @ApiOperation(value = "查询输注折线图", notes = "权限: 无")
     @GetMapping("/infusion/graph/{infusionId}")
-    public CommonResult<String> infusionGraph(@PathVariable String infusionId) {
-        return CommonResult.success(null);
+    public CommonResult<BizInfusionLineVO> infusionGraph(@PathVariable String infusionId) {
+        return CommonResult.success(bizDeviceService.queryInfusionGraph(infusionId));
     }
 
 

+ 30 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/web/vo/BizInfusionLineVO.java

@@ -0,0 +1,30 @@
+package cn.tr.module.smart.web.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @author wangzl
+ * @description: TODO
+ * @date 2025/9/1 8:50
+ */
+@Data
+@ApiModel("输注折线图内容")
+public class BizInfusionLineVO {
+
+    @ApiModelProperty("自控有效次数")
+    private List<Integer> validCount;
+
+    @ApiModelProperty("自控无效次数")
+    private List<Integer> inValidCount;
+
+    @ApiModelProperty("已输入量")
+    private List<BigDecimal> inputDose;
+
+    @ApiModelProperty("上传时间")
+    private List<String> uploadTime;
+}