Procházet zdrojové kódy

新增 分页功能

18339543638 před 2 roky
rodič
revize
19512f3c70

+ 6 - 0
tr-framework/pom.xml

@@ -20,6 +20,12 @@
 
 
     <dependencies>
+        <dependency>
+            <groupId>com.github.pagehelper</groupId>
+            <artifactId>pagehelper-spring-boot-starter</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
         <dependency>
             <groupId>cn.hutool</groupId>
             <artifactId>hutool-all</artifactId>

+ 14 - 28
tr-framework/src/main/java/cn/tr/core/pojo/TableDataInfo.java

@@ -1,6 +1,6 @@
 package cn.tr.core.pojo;
 
-import cn.hutool.core.util.StrUtil;
+
 import cn.tr.core.exception.TRExcCode;
 import lombok.Data;
 
@@ -12,8 +12,7 @@ import java.io.Serializable;
  * @author lifang
  */
 @Data
-public class TableDataInfo<T> implements Serializable
-{
+public class TableDataInfo<T> implements Serializable {
     private static final long serialVersionUID = 1L;
 
     /** 列表数据 */
@@ -25,39 +24,26 @@ public class TableDataInfo<T> implements Serializable
     /** 消息内容 */
     private String errorMsg;
 
-    private TableDataInfo(PageInfo<T> data, TRExcCode code, String errorMsg) {
-        this.data = data;
-        this.code = code.getErrCode();
-        this.errorMsg = StrUtil.isNotEmpty(errorMsg)?errorMsg:code.getErrMsg();
-    }
-
-    private TableDataInfo(PageInfo<T> data, TRExcCode code) {
-        this.data = data;
-        this.code = code.getErrCode();
-        this.errorMsg =code.getErrMsg();
-    }
-
 
     /**
      * 表格数据对象
      */
-    private TableDataInfo() {
-    }
-
-    public  static <C> TableDataInfo success(PageInfo<C> page){
-        return new TableDataInfo(page,TRExcCode.SUCCESS);
+    public TableDataInfo()
+    {
     }
 
-    public  static <C> TableDataInfo fail(PageInfo<C> page, TRExcCode code){
-        return new TableDataInfo(page,code);
-    }
-
-
-    public  static <C> TableDataInfo fail(PageInfo<C> page, TRExcCode code,String errorMsg){
-        return new TableDataInfo(page,code,errorMsg);
+    /**
+     * 分页
+     *
+     * @param page 分页数据
+     *
+     */
+    public TableDataInfo(PageInfo<T> page)
+    {
+        this.code= TRExcCode.SUCCESS.getErrCode();
+        this.data = page;
     }
 
-
     public String getErrorMsg() {
         return errorMsg==null?"":errorMsg;
     }

+ 2 - 1
tr-framework/src/main/java/cn/tr/core/strategy/PageStrategy.java

@@ -1,6 +1,7 @@
 package cn.tr.core.strategy;
 
 import cn.tr.core.pojo.PageDomain;
+import com.github.pagehelper.Page;
 
 import java.util.function.Consumer;
 import java.util.function.Supplier;
@@ -34,6 +35,6 @@ public class PageStrategy {
     /**
      * 获取当前最终分页参数
      */
-    public Supplier<PageDomain> getPage=()-> new PageDomain(1,10);
+    public Supplier<Page<?>> getPage=()-> new Page<>();
 
 }

+ 3 - 1
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/mapper/OperLogMapper.java

@@ -5,7 +5,7 @@ import cn.tr.module.sys.operatelog.po.SysOperLogPO;
 import cn.tr.plugin.operatelog.bo.OperateLogBO;
 import org.mapstruct.Mapper;
 import org.mapstruct.factory.Mappers;
-
+import java.util.*;
 /**
  * @ClassName : OperateMapper
  * @Description :
@@ -21,4 +21,6 @@ public interface OperLogMapper {
     SysOperLogDTO toOperLogDto(OperateLogBO source);
 
     SysOperLogDTO toOperLogDto(SysOperLogPO source);
+
+    List<SysOperLogDTO> toOperLogDto(List<SysOperLogPO> source);
 }

+ 6 - 3
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/operatelog/controller/SysOperLogController.java

@@ -1,9 +1,11 @@
 package cn.tr.module.sys.operatelog.controller;
 
 import cn.tr.core.pojo.CommonResult;
+import cn.tr.core.pojo.TableDataInfo;
 import cn.tr.module.sys.operatelog.dto.SysOperLogDTO;
 import cn.tr.module.sys.operatelog.dto.query.SysOpeLogQueryDTO;
 import cn.tr.module.sys.operatelog.service.ISysOperLogService;
+import cn.tr.plugin.mybatis.base.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
@@ -20,13 +22,14 @@ import java.util.*;
 @RequestMapping("/sys/operLog")
 @Api(tags = "操作日志")
 @AllArgsConstructor
-public class SysOperLogController {
+public class SysOperLogController extends BaseController {
     private final ISysOperLogService operLogService;
 
     @PostMapping("/query")
     @ApiOperation("根据条件查询操作日志")
-    public CommonResult<List<SysOperLogDTO>> selectList(@RequestBody SysOpeLogQueryDTO query){
-        return CommonResult.success(operLogService.selectOperLogDataList(query));
+    public TableDataInfo<SysOperLogDTO> selectList(@RequestBody SysOpeLogQueryDTO query){
+        startPage();
+        return getDataTable(operLogService.selectOperLogDataList(query));
     }
 
     @GetMapping("/{id}")

+ 1 - 3
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/operatelog/service/SysOperLogServiceImpl.java

@@ -26,9 +26,7 @@ public class SysOperLogServiceImpl implements ISysOperLogService{
     private final SysOperLogRepository logRepository;
     @Override
     public List<SysOperLogDTO> selectOperLogDataList(SysOpeLogQueryDTO query) {
-        List<SysOperLogPO> sysOperLogPOS = logRepository.selectList(new QueryWrapper<>());
-
-        return null;
+        return OperLogMapper.INSTANCE.toOperLogDto(logRepository.selectList(new QueryWrapper<>()));
     }
 
     @Override

+ 7 - 1
tr-plugins/tr-spring-boot-starter-plugin-biz-excel/pom.xml

@@ -52,7 +52,13 @@
         <dependency>
             <groupId>org.apache.poi</groupId>
             <artifactId>poi-ooxml</artifactId>
-            <version>4.1.2</version>
+            <version>5.2.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.deepoove</groupId>
+            <artifactId>poi-tl</artifactId>
+            <version>1.12.0</version>
         </dependency>
 
 

+ 2 - 2
tr-plugins/tr-spring-boot-starter-plugin-biz-excel/src/main/java/cn/tr/plugin/excel/config/ExcelHelper.java

@@ -472,7 +472,7 @@ public class ExcelHelper<T> {
      */
     public void exportExcel(OutputStream outputStream ,String fileName,List<T> list, String sheetName, String title) throws IOException {
         this.init(list, sheetName, title, Type.EXPORT);
-//        threadPoolExecutor.submit(()->{
+        threadPoolExecutor.submit(()->{
         sheets.parallelStream().forEach(sheet -> { exportExcel(sheet,sheetDataMap.get(sheet)); });
         try {
             wb.write(outputStream);
@@ -482,7 +482,7 @@ public class ExcelHelper<T> {
         }finally {
             IOUtils.closeQuietly(wb);
         }
-//        });
+        });
     }
 
     /**

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
tr-plugins/tr-spring-boot-starter-plugin-biz-excel/src/main/resources/base64


+ 1 - 0
tr-plugins/tr-spring-boot-starter-plugin-biz-excel/src/test/java/cn/tr/plugin/excel/ExcelTest.java

@@ -71,6 +71,7 @@ public class ExcelTest extends BaseMockitoUnitTest {
         FileOutputStream fileOutputStream = new FileOutputStream(file);
         excelHelper.exportExcel(fileOutputStream,"111.xlsx",users,"测试","用户表单");
         System.out.println("耗时============"+(System.currentTimeMillis() - currentTimeMillis));
+        while (true){}
     }
 
     @Data

+ 1477 - 0
tr-plugins/tr-spring-boot-starter-plugin-biz-excel/src/test/java/cn/tr/plugin/excel/WordTest.java

@@ -0,0 +1,1477 @@
+package cn.tr.plugin.excel;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.codec.Base64;
+import cn.hutool.core.io.FastByteArrayOutputStream;
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.io.IoUtil;
+import cn.hutool.core.map.MapUtil;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import cn.tr.core.utils.JsonUtils;
+import cn.tr.plugin.dict.config.cache.DictManager;
+import cn.tr.plugin.excel.config.ExcelHelperFactory;
+import cn.tr.plugin.test.ut.BaseMockitoUnitTest;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.deepoove.poi.data.PictureType;
+import com.deepoove.poi.data.Pictures;
+import com.deepoove.poi.plugin.table.LoopColumnTableRenderPolicy;
+import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
+import com.deepoove.poi.util.ByteUtils;
+import com.deepoove.poi.util.PoitlIOUtils;
+import com.deepoove.poi.xwpf.NiceXWPFDocument;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import org.apache.poi.xwpf.usermodel.BreakType;
+import org.apache.poi.xwpf.usermodel.Document;
+import org.apache.poi.xwpf.usermodel.XWPFDocument;
+import org.apache.poi.xwpf.usermodel.XWPFRun;
+import org.apache.xmlgraphics.image.loader.util.ImageUtil;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.springframework.util.Base64Utils;
+
+import java.io.*;
+import java.math.BigDecimal;
+import java.nio.charset.Charset;
+import java.util.*;
+import java.util.Map;
+
+/**
+ * @ClassName : WordTest
+ * @Description :
+ * @Author : LF
+ * @Date: 2023年03月25日
+ */
+
+public class WordTest extends BaseMockitoUnitTest {
+    private DictManager dictManager;
+    String str="[\n" +
+            "  {\n" +
+            "    \"id\": \"1634418903713304577\",\n" +
+            "    \"createTime\": \"2023-03-11 13:00:07\",\n" +
+            "    \"createBy\": \"1\",\n" +
+            "    \"updateBy\": null,\n" +
+            "    \"updateTime\": \"2023-03-11 13:00:07\",\n" +
+            "    \"tenantId\": \"43332553109747f3857e1e434e1e2ef3\",\n" +
+            "    \"deviceId\": \"43207937393702B0\",\n" +
+            "    \"classification\": \"1634418903650390020\",\n" +
+            "    \"dataNumber\": 3,\n" +
+            "    \"type\": {\n" +
+            "      \"value\": 1,\n" +
+            "      \"text\": \"持续型\"\n" +
+            "    },\n" +
+            "    \"patientCode\": \"9000000000000\",\n" +
+            "    \"ward\": \"\",\n" +
+            "    \"bedNo\": \"\",\n" +
+            "    \"totalDose\": 5,\n" +
+            "    \"firstDose\": 5,\n" +
+            "    \"remainDose\": 0,\n" +
+            "    \"inputDose\": 5,\n" +
+            "    \"appendDose\": 0,\n" +
+            "    \"maxDose\": 90,\n" +
+            "    \"selfControlLockTime\": 0,\n" +
+            "    \"selfControlCount\": null,\n" +
+            "    \"pcaValidCount\": 0,\n" +
+            "    \"pcaInvalidCount\": 0,\n" +
+            "    \"pcaTotalCount\": 0,\n" +
+            "    \"continueDose\": 50,\n" +
+            "    \"pulseDose\": null,\n" +
+            "    \"pulseLockTime\": null,\n" +
+            "    \"pulseFirstLockTime\": null,\n" +
+            "    \"flowUpCycle\": null,\n" +
+            "    \"flowDownCycle\": null,\n" +
+            "    \"flowCount\": null,\n" +
+            "    \"flowUpLimit\": null,\n" +
+            "    \"flowDownLimit\": null,\n" +
+            "    \"flowAdjustRate\": null,\n" +
+            "    \"electricQuantity\": 93,\n" +
+            "    \"snr\": null,\n" +
+            "    \"rssi\": null,\n" +
+            "    \"rsrq\": null,\n" +
+            "    \"rsrp\": null,\n" +
+            "    \"modifies\": [\n" +
+            "      {\n" +
+            "        \"id\": \"1634418903902048257\",\n" +
+            "        \"createTime\": \"2023-03-11 13:00:07\",\n" +
+            "        \"createBy\": \"1\",\n" +
+            "        \"updateBy\": \"1\",\n" +
+            "        \"updateTime\": \"2023-03-11 13:00:07\",\n" +
+            "        \"tenantId\": \"43332553109747f3857e1e434e1e2ef3\",\n" +
+            "        \"deviceId\": \"43207937393702B0\",\n" +
+            "        \"classification\": \"1634418903650390020\",\n" +
+            "        \"dataNumber\": 1,\n" +
+            "        \"type\": {\n" +
+            "          \"value\": 1,\n" +
+            "          \"text\": \"持续型\"\n" +
+            "        },\n" +
+            "        \"patientCode\": null,\n" +
+            "        \"ward\": null,\n" +
+            "        \"bedNo\": null,\n" +
+            "        \"totalDose\": 5,\n" +
+            "        \"firstDose\": 5,\n" +
+            "        \"remainDose\": 0,\n" +
+            "        \"inputDose\": 5,\n" +
+            "        \"appendDose\": 0,\n" +
+            "        \"maxDose\": 90,\n" +
+            "        \"selfControlLockTime\": 0,\n" +
+            "        \"selfControlCount\": null,\n" +
+            "        \"pcaValidCount\": 0,\n" +
+            "        \"pcaInvalidCount\": 0,\n" +
+            "        \"pcaTotalCount\": 0,\n" +
+            "        \"continueDose\": 50,\n" +
+            "        \"pulseDose\": null,\n" +
+            "        \"pulseLockTime\": null,\n" +
+            "        \"pulseFirstLockTime\": null,\n" +
+            "        \"flowUpCycle\": null,\n" +
+            "        \"flowDownCycle\": null,\n" +
+            "        \"flowCount\": null,\n" +
+            "        \"flowUpLimit\": null,\n" +
+            "        \"flowDownLimit\": null,\n" +
+            "        \"flowAdjustRate\": null,\n" +
+            "        \"electricQuantity\": null,\n" +
+            "        \"snr\": null,\n" +
+            "        \"rssi\": null,\n" +
+            "        \"rsrq\": null,\n" +
+            "        \"rsrp\": null,\n" +
+            "        \"infusionId\": \"1634418903713304577\",\n" +
+            "        \"modifyTime\": \"2023-03-01 16:29:31\",\n" +
+            "        \"print\": true\n" +
+            "      }\n" +
+            "    ],\n" +
+            "    \"alias\": null,\n" +
+            "    \"print\": true,\n" +
+            "    \"finished\": 0,\n" +
+            "    \"lastUploadTime\": \"2023-03-01 16:29:34\",\n" +
+            "    \"startTime\": \"2023-03-01 16:29:31\"\n" +
+            "  },\n" +
+            "  {\n" +
+            "    \"id\": \"1634418901553238018\",\n" +
+            "    \"createTime\": \"2023-03-11 13:00:06\",\n" +
+            "    \"createBy\": \"1\",\n" +
+            "    \"updateBy\": null,\n" +
+            "    \"updateTime\": \"2023-03-11 13:00:07\",\n" +
+            "    \"tenantId\": \"43332553109747f3857e1e434e1e2ef3\",\n" +
+            "    \"deviceId\": \"43207937393702B0\",\n" +
+            "    \"classification\": \"1634418901486129156\",\n" +
+            "    \"dataNumber\": 4,\n" +
+            "    \"type\": {\n" +
+            "      \"value\": 1,\n" +
+            "      \"text\": \"持续型\"\n" +
+            "    },\n" +
+            "    \"patientCode\": \"9000000000000\",\n" +
+            "    \"ward\": \"\",\n" +
+            "    \"bedNo\": \"\",\n" +
+            "    \"totalDose\": 5,\n" +
+            "    \"firstDose\": 5,\n" +
+            "    \"remainDose\": 0.6,\n" +
+            "    \"inputDose\": 4.4,\n" +
+            "    \"appendDose\": 0,\n" +
+            "    \"maxDose\": 90,\n" +
+            "    \"selfControlLockTime\": 0,\n" +
+            "    \"selfControlCount\": null,\n" +
+            "    \"pcaValidCount\": 0,\n" +
+            "    \"pcaInvalidCount\": 0,\n" +
+            "    \"pcaTotalCount\": 0,\n" +
+            "    \"continueDose\": 50,\n" +
+            "    \"pulseDose\": null,\n" +
+            "    \"pulseLockTime\": null,\n" +
+            "    \"pulseFirstLockTime\": null,\n" +
+            "    \"flowUpCycle\": null,\n" +
+            "    \"flowDownCycle\": null,\n" +
+            "    \"flowCount\": null,\n" +
+            "    \"flowUpLimit\": null,\n" +
+            "    \"flowDownLimit\": null,\n" +
+            "    \"flowAdjustRate\": null,\n" +
+            "    \"electricQuantity\": 93,\n" +
+            "    \"snr\": null,\n" +
+            "    \"rssi\": null,\n" +
+            "    \"rsrq\": null,\n" +
+            "    \"rsrp\": null,\n" +
+            "    \"modifies\": [\n" +
+            "      {\n" +
+            "        \"id\": \"1634418901741981697\",\n" +
+            "        \"createTime\": \"2023-03-11 13:00:07\",\n" +
+            "        \"createBy\": \"1\",\n" +
+            "        \"updateBy\": \"1\",\n" +
+            "        \"updateTime\": \"2023-03-11 13:00:07\",\n" +
+            "        \"tenantId\": \"43332553109747f3857e1e434e1e2ef3\",\n" +
+            "        \"deviceId\": \"43207937393702B0\",\n" +
+            "        \"classification\": \"1634418901486129156\",\n" +
+            "        \"dataNumber\": 1,\n" +
+            "        \"type\": {\n" +
+            "          \"value\": 1,\n" +
+            "          \"text\": \"持续型\"\n" +
+            "        },\n" +
+            "        \"patientCode\": null,\n" +
+            "        \"ward\": null,\n" +
+            "        \"bedNo\": null,\n" +
+            "        \"totalDose\": 5,\n" +
+            "        \"firstDose\": 5,\n" +
+            "        \"remainDose\": 3.2,\n" +
+            "        \"inputDose\": 1.8,\n" +
+            "        \"appendDose\": 0,\n" +
+            "        \"maxDose\": 90,\n" +
+            "        \"selfControlLockTime\": 0,\n" +
+            "        \"selfControlCount\": null,\n" +
+            "        \"pcaValidCount\": 0,\n" +
+            "        \"pcaInvalidCount\": 0,\n" +
+            "        \"pcaTotalCount\": 0,\n" +
+            "        \"continueDose\": 50,\n" +
+            "        \"pulseDose\": null,\n" +
+            "        \"pulseLockTime\": null,\n" +
+            "        \"pulseFirstLockTime\": null,\n" +
+            "        \"flowUpCycle\": null,\n" +
+            "        \"flowDownCycle\": null,\n" +
+            "        \"flowCount\": null,\n" +
+            "        \"flowUpLimit\": null,\n" +
+            "        \"flowDownLimit\": null,\n" +
+            "        \"flowAdjustRate\": null,\n" +
+            "        \"electricQuantity\": null,\n" +
+            "        \"snr\": null,\n" +
+            "        \"rssi\": null,\n" +
+            "        \"rsrq\": null,\n" +
+            "        \"rsrp\": null,\n" +
+            "        \"infusionId\": \"1634418901553238018\",\n" +
+            "        \"modifyTime\": \"2023-03-01 16:27:37\",\n" +
+            "        \"print\": true\n" +
+            "      }\n" +
+            "    ],\n" +
+            "    \"alias\": null,\n" +
+            "    \"print\": true,\n" +
+            "    \"finished\": 1,\n" +
+            "    \"lastUploadTime\": \"2023-03-01 16:29:12\",\n" +
+            "    \"startTime\": \"2023-03-01 16:27:37\"\n" +
+            "  },\n" +
+            "  {\n" +
+            "    \"id\": \"1634418900785680386\",\n" +
+            "    \"createTime\": \"2023-03-11 13:00:06\",\n" +
+            "    \"createBy\": \"1\",\n" +
+            "    \"updateBy\": \"1\",\n" +
+            "    \"updateTime\": \"2023-03-11 13:00:06\",\n" +
+            "    \"tenantId\": \"43332553109747f3857e1e434e1e2ef3\",\n" +
+            "    \"deviceId\": \"43207937393702B0\",\n" +
+            "    \"classification\": \"1634418900722765827\",\n" +
+            "    \"dataNumber\": 1,\n" +
+            "    \"type\": {\n" +
+            "      \"value\": 1,\n" +
+            "      \"text\": \"持续型\"\n" +
+            "    },\n" +
+            "    \"patientCode\": \"9000000000000\",\n" +
+            "    \"ward\": \"\",\n" +
+            "    \"bedNo\": \"\",\n" +
+            "    \"totalDose\": 5,\n" +
+            "    \"firstDose\": 5,\n" +
+            "    \"remainDose\": 4.1,\n" +
+            "    \"inputDose\": 0.9,\n" +
+            "    \"appendDose\": 0,\n" +
+            "    \"maxDose\": 90,\n" +
+            "    \"selfControlLockTime\": 0,\n" +
+            "    \"selfControlCount\": null,\n" +
+            "    \"pcaValidCount\": 0,\n" +
+            "    \"pcaInvalidCount\": 0,\n" +
+            "    \"pcaTotalCount\": 0,\n" +
+            "    \"continueDose\": 50,\n" +
+            "    \"pulseDose\": null,\n" +
+            "    \"pulseLockTime\": null,\n" +
+            "    \"pulseFirstLockTime\": null,\n" +
+            "    \"flowUpCycle\": null,\n" +
+            "    \"flowDownCycle\": null,\n" +
+            "    \"flowCount\": null,\n" +
+            "    \"flowUpLimit\": null,\n" +
+            "    \"flowDownLimit\": null,\n" +
+            "    \"flowAdjustRate\": null,\n" +
+            "    \"electricQuantity\": 94,\n" +
+            "    \"snr\": null,\n" +
+            "    \"rssi\": null,\n" +
+            "    \"rsrq\": null,\n" +
+            "    \"rsrp\": null,\n" +
+            "    \"modifies\": [\n" +
+            "      {\n" +
+            "        \"id\": \"1634418900974424065\",\n" +
+            "        \"createTime\": \"2023-03-11 13:00:07\",\n" +
+            "        \"createBy\": \"1\",\n" +
+            "        \"updateBy\": \"1\",\n" +
+            "        \"updateTime\": \"2023-03-11 13:00:07\",\n" +
+            "        \"tenantId\": \"43332553109747f3857e1e434e1e2ef3\",\n" +
+            "        \"deviceId\": \"43207937393702B0\",\n" +
+            "        \"classification\": \"1634418900722765827\",\n" +
+            "        \"dataNumber\": 1,\n" +
+            "        \"type\": {\n" +
+            "          \"value\": 1,\n" +
+            "          \"text\": \"持续型\"\n" +
+            "        },\n" +
+            "        \"patientCode\": null,\n" +
+            "        \"ward\": null,\n" +
+            "        \"bedNo\": null,\n" +
+            "        \"totalDose\": 5,\n" +
+            "        \"firstDose\": 5,\n" +
+            "        \"remainDose\": 4.1,\n" +
+            "        \"inputDose\": 0.9,\n" +
+            "        \"appendDose\": 0,\n" +
+            "        \"maxDose\": 90,\n" +
+            "        \"selfControlLockTime\": 0,\n" +
+            "        \"selfControlCount\": null,\n" +
+            "        \"pcaValidCount\": 0,\n" +
+            "        \"pcaInvalidCount\": 0,\n" +
+            "        \"pcaTotalCount\": 0,\n" +
+            "        \"continueDose\": 50,\n" +
+            "        \"pulseDose\": null,\n" +
+            "        \"pulseLockTime\": null,\n" +
+            "        \"pulseFirstLockTime\": null,\n" +
+            "        \"flowUpCycle\": null,\n" +
+            "        \"flowDownCycle\": null,\n" +
+            "        \"flowCount\": null,\n" +
+            "        \"flowUpLimit\": null,\n" +
+            "        \"flowDownLimit\": null,\n" +
+            "        \"flowAdjustRate\": null,\n" +
+            "        \"electricQuantity\": null,\n" +
+            "        \"snr\": null,\n" +
+            "        \"rssi\": null,\n" +
+            "        \"rsrq\": null,\n" +
+            "        \"rsrp\": null,\n" +
+            "        \"infusionId\": \"1634418900785680386\",\n" +
+            "        \"modifyTime\": \"2023-03-01 16:27:06\",\n" +
+            "        \"print\": true\n" +
+            "      }\n" +
+            "    ],\n" +
+            "    \"alias\": null,\n" +
+            "    \"print\": true,\n" +
+            "    \"finished\": 1,\n" +
+            "    \"lastUploadTime\": \"2023-03-01 16:27:06\",\n" +
+            "    \"startTime\": \"2023-03-01 16:27:06\"\n" +
+            "  },\n" +
+            "  {\n" +
+            "    \"id\": \"1634418900022317058\",\n" +
+            "    \"createTime\": \"2023-03-11 13:00:06\",\n" +
+            "    \"createBy\": \"1\",\n" +
+            "    \"updateBy\": \"1\",\n" +
+            "    \"updateTime\": \"2023-03-11 13:00:06\",\n" +
+            "    \"tenantId\": \"43332553109747f3857e1e434e1e2ef3\",\n" +
+            "    \"deviceId\": \"43207937393702B0\",\n" +
+            "    \"classification\": \"1634418899959402501\",\n" +
+            "    \"dataNumber\": 1,\n" +
+            "    \"type\": {\n" +
+            "      \"value\": 1,\n" +
+            "      \"text\": \"持续型\"\n" +
+            "    },\n" +
+            "    \"patientCode\": \"9000000000000\",\n" +
+            "    \"ward\": \"\",\n" +
+            "    \"bedNo\": \"\",\n" +
+            "    \"totalDose\": 5,\n" +
+            "    \"firstDose\": 5,\n" +
+            "    \"remainDose\": 5,\n" +
+            "    \"inputDose\": 0,\n" +
+            "    \"appendDose\": 0,\n" +
+            "    \"maxDose\": 90,\n" +
+            "    \"selfControlLockTime\": 0,\n" +
+            "    \"selfControlCount\": null,\n" +
+            "    \"pcaValidCount\": 0,\n" +
+            "    \"pcaInvalidCount\": 0,\n" +
+            "    \"pcaTotalCount\": 0,\n" +
+            "    \"continueDose\": 50,\n" +
+            "    \"pulseDose\": null,\n" +
+            "    \"pulseLockTime\": null,\n" +
+            "    \"pulseFirstLockTime\": null,\n" +
+            "    \"flowUpCycle\": null,\n" +
+            "    \"flowDownCycle\": null,\n" +
+            "    \"flowCount\": null,\n" +
+            "    \"flowUpLimit\": null,\n" +
+            "    \"flowDownLimit\": null,\n" +
+            "    \"flowAdjustRate\": null,\n" +
+            "    \"electricQuantity\": 95,\n" +
+            "    \"snr\": null,\n" +
+            "    \"rssi\": null,\n" +
+            "    \"rsrq\": null,\n" +
+            "    \"rsrp\": null,\n" +
+            "    \"modifies\": [\n" +
+            "      {\n" +
+            "        \"id\": \"1634418900211060738\",\n" +
+            "        \"createTime\": \"2023-03-11 13:00:07\",\n" +
+            "        \"createBy\": \"1\",\n" +
+            "        \"updateBy\": \"1\",\n" +
+            "        \"updateTime\": \"2023-03-11 13:00:07\",\n" +
+            "        \"tenantId\": \"43332553109747f3857e1e434e1e2ef3\",\n" +
+            "        \"deviceId\": \"43207937393702B0\",\n" +
+            "        \"classification\": \"1634418899959402501\",\n" +
+            "        \"dataNumber\": 1,\n" +
+            "        \"type\": {\n" +
+            "          \"value\": 1,\n" +
+            "          \"text\": \"持续型\"\n" +
+            "        },\n" +
+            "        \"patientCode\": null,\n" +
+            "        \"ward\": null,\n" +
+            "        \"bedNo\": null,\n" +
+            "        \"totalDose\": 5,\n" +
+            "        \"firstDose\": 5,\n" +
+            "        \"remainDose\": 5,\n" +
+            "        \"inputDose\": 0,\n" +
+            "        \"appendDose\": 0,\n" +
+            "        \"maxDose\": 90,\n" +
+            "        \"selfControlLockTime\": 0,\n" +
+            "        \"selfControlCount\": null,\n" +
+            "        \"pcaValidCount\": 0,\n" +
+            "        \"pcaInvalidCount\": 0,\n" +
+            "        \"pcaTotalCount\": 0,\n" +
+            "        \"continueDose\": 50,\n" +
+            "        \"pulseDose\": null,\n" +
+            "        \"pulseLockTime\": null,\n" +
+            "        \"pulseFirstLockTime\": null,\n" +
+            "        \"flowUpCycle\": null,\n" +
+            "        \"flowDownCycle\": null,\n" +
+            "        \"flowCount\": null,\n" +
+            "        \"flowUpLimit\": null,\n" +
+            "        \"flowDownLimit\": null,\n" +
+            "        \"flowAdjustRate\": null,\n" +
+            "        \"electricQuantity\": null,\n" +
+            "        \"snr\": null,\n" +
+            "        \"rssi\": null,\n" +
+            "        \"rsrq\": null,\n" +
+            "        \"rsrp\": null,\n" +
+            "        \"infusionId\": \"1634418900022317058\",\n" +
+            "        \"modifyTime\": \"2023-03-01 16:26:34\",\n" +
+            "        \"print\": true\n" +
+            "      }\n" +
+            "    ],\n" +
+            "    \"alias\": null,\n" +
+            "    \"print\": true,\n" +
+            "    \"finished\": 1,\n" +
+            "    \"lastUploadTime\": \"2023-03-01 16:26:34\",\n" +
+            "    \"startTime\": \"2023-03-01 16:26:34\"\n" +
+            "  },\n" +
+            "  {\n" +
+            "    \"id\": \"1634418899019878402\",\n" +
+            "    \"createTime\": \"2023-03-11 13:00:06\",\n" +
+            "    \"createBy\": \"1\",\n" +
+            "    \"updateBy\": \"1\",\n" +
+            "    \"updateTime\": \"2023-03-11 13:00:06\",\n" +
+            "    \"tenantId\": \"43332553109747f3857e1e434e1e2ef3\",\n" +
+            "    \"deviceId\": \"43207937393702B0\",\n" +
+            "    \"classification\": \"1634418898956963843\",\n" +
+            "    \"dataNumber\": 1,\n" +
+            "    \"type\": {\n" +
+            "      \"value\": 1,\n" +
+            "      \"text\": \"持续型\"\n" +
+            "    },\n" +
+            "    \"patientCode\": \"9000000000000\",\n" +
+            "    \"ward\": \"\",\n" +
+            "    \"bedNo\": \"\",\n" +
+            "    \"totalDose\": 5,\n" +
+            "    \"firstDose\": 5,\n" +
+            "    \"remainDose\": 0,\n" +
+            "    \"inputDose\": 5,\n" +
+            "    \"appendDose\": 0,\n" +
+            "    \"maxDose\": 90,\n" +
+            "    \"selfControlLockTime\": 0,\n" +
+            "    \"selfControlCount\": null,\n" +
+            "    \"pcaValidCount\": 0,\n" +
+            "    \"pcaInvalidCount\": 0,\n" +
+            "    \"pcaTotalCount\": 0,\n" +
+            "    \"continueDose\": 50,\n" +
+            "    \"pulseDose\": null,\n" +
+            "    \"pulseLockTime\": null,\n" +
+            "    \"pulseFirstLockTime\": null,\n" +
+            "    \"flowUpCycle\": null,\n" +
+            "    \"flowDownCycle\": null,\n" +
+            "    \"flowCount\": null,\n" +
+            "    \"flowUpLimit\": null,\n" +
+            "    \"flowDownLimit\": null,\n" +
+            "    \"flowAdjustRate\": null,\n" +
+            "    \"electricQuantity\": 95,\n" +
+            "    \"snr\": null,\n" +
+            "    \"rssi\": null,\n" +
+            "    \"rsrq\": null,\n" +
+            "    \"rsrp\": null,\n" +
+            "    \"modifies\": [\n" +
+            "      {\n" +
+            "        \"id\": \"1634418899204427778\",\n" +
+            "        \"createTime\": \"2023-03-11 13:00:06\",\n" +
+            "        \"createBy\": \"1\",\n" +
+            "        \"updateBy\": \"1\",\n" +
+            "        \"updateTime\": \"2023-03-11 13:00:06\",\n" +
+            "        \"tenantId\": \"43332553109747f3857e1e434e1e2ef3\",\n" +
+            "        \"deviceId\": \"43207937393702B0\",\n" +
+            "        \"classification\": \"1634418898956963843\",\n" +
+            "        \"dataNumber\": 1,\n" +
+            "        \"type\": {\n" +
+            "          \"value\": 1,\n" +
+            "          \"text\": \"持续型\"\n" +
+            "        },\n" +
+            "        \"patientCode\": null,\n" +
+            "        \"ward\": null,\n" +
+            "        \"bedNo\": null,\n" +
+            "        \"totalDose\": 5,\n" +
+            "        \"firstDose\": 5,\n" +
+            "        \"remainDose\": 0,\n" +
+            "        \"inputDose\": 5,\n" +
+            "        \"appendDose\": 0,\n" +
+            "        \"maxDose\": 90,\n" +
+            "        \"selfControlLockTime\": 0,\n" +
+            "        \"selfControlCount\": null,\n" +
+            "        \"pcaValidCount\": 0,\n" +
+            "        \"pcaInvalidCount\": 0,\n" +
+            "        \"pcaTotalCount\": 0,\n" +
+            "        \"continueDose\": 50,\n" +
+            "        \"pulseDose\": null,\n" +
+            "        \"pulseLockTime\": null,\n" +
+            "        \"pulseFirstLockTime\": null,\n" +
+            "        \"flowUpCycle\": null,\n" +
+            "        \"flowDownCycle\": null,\n" +
+            "        \"flowCount\": null,\n" +
+            "        \"flowUpLimit\": null,\n" +
+            "        \"flowDownLimit\": null,\n" +
+            "        \"flowAdjustRate\": null,\n" +
+            "        \"electricQuantity\": null,\n" +
+            "        \"snr\": null,\n" +
+            "        \"rssi\": null,\n" +
+            "        \"rsrq\": null,\n" +
+            "        \"rsrp\": null,\n" +
+            "        \"infusionId\": \"1634418899019878402\",\n" +
+            "        \"modifyTime\": \"2023-03-01 16:26:32\",\n" +
+            "        \"print\": true\n" +
+            "      }\n" +
+            "    ],\n" +
+            "    \"alias\": null,\n" +
+            "    \"print\": true,\n" +
+            "    \"finished\": 1,\n" +
+            "    \"lastUploadTime\": \"2023-03-01 16:26:32\",\n" +
+            "    \"startTime\": \"2023-03-01 16:26:32\"\n" +
+            "  },\n" +
+            "  {\n" +
+            "    \"id\": \"1634418881059868674\",\n" +
+            "    \"createTime\": \"2023-03-11 13:00:02\",\n" +
+            "    \"createBy\": \"1\",\n" +
+            "    \"updateBy\": null,\n" +
+            "    \"updateTime\": \"2023-03-11 13:00:02\",\n" +
+            "    \"tenantId\": \"43332553109747f3857e1e434e1e2ef3\",\n" +
+            "    \"deviceId\": \"43207937393702B0\",\n" +
+            "    \"classification\": \"1634418880996954114\",\n" +
+            "    \"dataNumber\": 9,\n" +
+            "    \"type\": {\n" +
+            "      \"value\": 1,\n" +
+            "      \"text\": \"持续型\"\n" +
+            "    },\n" +
+            "    \"patientCode\": \"9000000000000\",\n" +
+            "    \"ward\": \"\",\n" +
+            "    \"bedNo\": \"\",\n" +
+            "    \"totalDose\": 5,\n" +
+            "    \"firstDose\": 5,\n" +
+            "    \"remainDose\": 0,\n" +
+            "    \"inputDose\": 5,\n" +
+            "    \"appendDose\": 0,\n" +
+            "    \"maxDose\": 90,\n" +
+            "    \"selfControlLockTime\": 0,\n" +
+            "    \"selfControlCount\": null,\n" +
+            "    \"pcaValidCount\": 0,\n" +
+            "    \"pcaInvalidCount\": 0,\n" +
+            "    \"pcaTotalCount\": 0,\n" +
+            "    \"continueDose\": 50,\n" +
+            "    \"pulseDose\": null,\n" +
+            "    \"pulseLockTime\": null,\n" +
+            "    \"pulseFirstLockTime\": null,\n" +
+            "    \"flowUpCycle\": null,\n" +
+            "    \"flowDownCycle\": null,\n" +
+            "    \"flowCount\": null,\n" +
+            "    \"flowUpLimit\": null,\n" +
+            "    \"flowDownLimit\": null,\n" +
+            "    \"flowAdjustRate\": null,\n" +
+            "    \"electricQuantity\": 92,\n" +
+            "    \"snr\": null,\n" +
+            "    \"rssi\": null,\n" +
+            "    \"rsrq\": null,\n" +
+            "    \"rsrp\": null,\n" +
+            "    \"modifies\": [\n" +
+            "      {\n" +
+            "        \"id\": \"1634418881252806657\",\n" +
+            "        \"createTime\": \"2023-03-11 13:00:02\",\n" +
+            "        \"createBy\": \"1\",\n" +
+            "        \"updateBy\": \"1\",\n" +
+            "        \"updateTime\": \"2023-03-11 13:00:02\",\n" +
+            "        \"tenantId\": \"43332553109747f3857e1e434e1e2ef3\",\n" +
+            "        \"deviceId\": \"43207937393702B0\",\n" +
+            "        \"classification\": \"1634418880996954114\",\n" +
+            "        \"dataNumber\": 1,\n" +
+            "        \"type\": {\n" +
+            "          \"value\": 1,\n" +
+            "          \"text\": \"持续型\"\n" +
+            "        },\n" +
+            "        \"patientCode\": null,\n" +
+            "        \"ward\": null,\n" +
+            "        \"bedNo\": null,\n" +
+            "        \"totalDose\": 5,\n" +
+            "        \"firstDose\": 5,\n" +
+            "        \"remainDose\": 4.1,\n" +
+            "        \"inputDose\": 0.9,\n" +
+            "        \"appendDose\": 0,\n" +
+            "        \"maxDose\": 90,\n" +
+            "        \"selfControlLockTime\": 0,\n" +
+            "        \"selfControlCount\": null,\n" +
+            "        \"pcaValidCount\": 0,\n" +
+            "        \"pcaInvalidCount\": 0,\n" +
+            "        \"pcaTotalCount\": 0,\n" +
+            "        \"continueDose\": 50,\n" +
+            "        \"pulseDose\": null,\n" +
+            "        \"pulseLockTime\": null,\n" +
+            "        \"pulseFirstLockTime\": null,\n" +
+            "        \"flowUpCycle\": null,\n" +
+            "        \"flowDownCycle\": null,\n" +
+            "        \"flowCount\": null,\n" +
+            "        \"flowUpLimit\": null,\n" +
+            "        \"flowDownLimit\": null,\n" +
+            "        \"flowAdjustRate\": null,\n" +
+            "        \"electricQuantity\": null,\n" +
+            "        \"snr\": null,\n" +
+            "        \"rssi\": null,\n" +
+            "        \"rsrq\": null,\n" +
+            "        \"rsrp\": null,\n" +
+            "        \"infusionId\": \"1634418881059868674\",\n" +
+            "        \"modifyTime\": \"2023-03-01 11:11:12\",\n" +
+            "        \"print\": true\n" +
+            "      }\n" +
+            "    ],\n" +
+            "    \"alias\": null,\n" +
+            "    \"print\": true,\n" +
+            "    \"finished\": 1,\n" +
+            "    \"lastUploadTime\": \"2023-03-01 11:13:43\",\n" +
+            "    \"startTime\": \"2023-03-01 11:11:12\"\n" +
+            "  },\n" +
+            "  {\n" +
+            "    \"id\": \"1634418879591862274\",\n" +
+            "    \"createTime\": \"2023-03-11 13:00:01\",\n" +
+            "    \"createBy\": \"1\",\n" +
+            "    \"updateBy\": null,\n" +
+            "    \"updateTime\": \"2023-03-11 13:00:01\",\n" +
+            "    \"tenantId\": \"43332553109747f3857e1e434e1e2ef3\",\n" +
+            "    \"deviceId\": \"43207937393702B0\",\n" +
+            "    \"classification\": \"1634418879528947716\",\n" +
+            "    \"dataNumber\": 2,\n" +
+            "    \"type\": {\n" +
+            "      \"value\": 1,\n" +
+            "      \"text\": \"持续型\"\n" +
+            "    },\n" +
+            "    \"patientCode\": \"9000000000000\",\n" +
+            "    \"ward\": \"\",\n" +
+            "    \"bedNo\": \"\",\n" +
+            "    \"totalDose\": 5,\n" +
+            "    \"firstDose\": 5,\n" +
+            "    \"remainDose\": 5,\n" +
+            "    \"inputDose\": 0,\n" +
+            "    \"appendDose\": 0,\n" +
+            "    \"maxDose\": 90,\n" +
+            "    \"selfControlLockTime\": 0,\n" +
+            "    \"selfControlCount\": null,\n" +
+            "    \"pcaValidCount\": 0,\n" +
+            "    \"pcaInvalidCount\": 0,\n" +
+            "    \"pcaTotalCount\": 0,\n" +
+            "    \"continueDose\": 50,\n" +
+            "    \"pulseDose\": null,\n" +
+            "    \"pulseLockTime\": null,\n" +
+            "    \"pulseFirstLockTime\": null,\n" +
+            "    \"flowUpCycle\": null,\n" +
+            "    \"flowDownCycle\": null,\n" +
+            "    \"flowCount\": null,\n" +
+            "    \"flowUpLimit\": null,\n" +
+            "    \"flowDownLimit\": null,\n" +
+            "    \"flowAdjustRate\": null,\n" +
+            "    \"electricQuantity\": 92,\n" +
+            "    \"snr\": null,\n" +
+            "    \"rssi\": null,\n" +
+            "    \"rsrq\": null,\n" +
+            "    \"rsrp\": null,\n" +
+            "    \"modifies\": [\n" +
+            "      {\n" +
+            "        \"id\": \"1634418879784800257\",\n" +
+            "        \"createTime\": \"2023-03-11 13:00:02\",\n" +
+            "        \"createBy\": \"1\",\n" +
+            "        \"updateBy\": \"1\",\n" +
+            "        \"updateTime\": \"2023-03-11 13:00:02\",\n" +
+            "        \"tenantId\": \"43332553109747f3857e1e434e1e2ef3\",\n" +
+            "        \"deviceId\": \"43207937393702B0\",\n" +
+            "        \"classification\": \"1634418879528947716\",\n" +
+            "        \"dataNumber\": 1,\n" +
+            "        \"type\": {\n" +
+            "          \"value\": 1,\n" +
+            "          \"text\": \"持续型\"\n" +
+            "        },\n" +
+            "        \"patientCode\": null,\n" +
+            "        \"ward\": null,\n" +
+            "        \"bedNo\": null,\n" +
+            "        \"totalDose\": 5,\n" +
+            "        \"firstDose\": 5,\n" +
+            "        \"remainDose\": 5,\n" +
+            "        \"inputDose\": 0,\n" +
+            "        \"appendDose\": 0,\n" +
+            "        \"maxDose\": 90,\n" +
+            "        \"selfControlLockTime\": 0,\n" +
+            "        \"selfControlCount\": null,\n" +
+            "        \"pcaValidCount\": 0,\n" +
+            "        \"pcaInvalidCount\": 0,\n" +
+            "        \"pcaTotalCount\": 0,\n" +
+            "        \"continueDose\": 50,\n" +
+            "        \"pulseDose\": null,\n" +
+            "        \"pulseLockTime\": null,\n" +
+            "        \"pulseFirstLockTime\": null,\n" +
+            "        \"flowUpCycle\": null,\n" +
+            "        \"flowDownCycle\": null,\n" +
+            "        \"flowCount\": null,\n" +
+            "        \"flowUpLimit\": null,\n" +
+            "        \"flowDownLimit\": null,\n" +
+            "        \"flowAdjustRate\": null,\n" +
+            "        \"electricQuantity\": null,\n" +
+            "        \"snr\": null,\n" +
+            "        \"rssi\": null,\n" +
+            "        \"rsrq\": null,\n" +
+            "        \"rsrp\": null,\n" +
+            "        \"infusionId\": \"1634418879591862274\",\n" +
+            "        \"modifyTime\": \"2023-03-01 11:10:39\",\n" +
+            "        \"print\": true\n" +
+            "      }\n" +
+            "    ],\n" +
+            "    \"alias\": null,\n" +
+            "    \"print\": true,\n" +
+            "    \"finished\": 1,\n" +
+            "    \"lastUploadTime\": \"2023-03-01 11:10:41\",\n" +
+            "    \"startTime\": \"2023-03-01 11:10:39\"\n" +
+            "  },\n" +
+            "  {\n" +
+            "    \"id\": \"1634418827611852803\",\n" +
+            "    \"createTime\": \"2023-03-11 12:59:49\",\n" +
+            "    \"createBy\": \"1\",\n" +
+            "    \"updateBy\": null,\n" +
+            "    \"updateTime\": \"2023-03-11 12:59:49\",\n" +
+            "    \"tenantId\": \"43332553109747f3857e1e434e1e2ef3\",\n" +
+            "    \"deviceId\": \"43207937393702B0\",\n" +
+            "    \"classification\": \"1634418827611852802\",\n" +
+            "    \"dataNumber\": 7,\n" +
+            "    \"type\": {\n" +
+            "      \"value\": 1,\n" +
+            "      \"text\": \"持续型\"\n" +
+            "    },\n" +
+            "    \"patientCode\": \"9000000000000\",\n" +
+            "    \"ward\": \"\",\n" +
+            "    \"bedNo\": \"\",\n" +
+            "    \"totalDose\": 5,\n" +
+            "    \"firstDose\": 5,\n" +
+            "    \"remainDose\": 0,\n" +
+            "    \"inputDose\": 5,\n" +
+            "    \"appendDose\": 0,\n" +
+            "    \"maxDose\": 90,\n" +
+            "    \"selfControlLockTime\": 0,\n" +
+            "    \"selfControlCount\": null,\n" +
+            "    \"pcaValidCount\": 0,\n" +
+            "    \"pcaInvalidCount\": 0,\n" +
+            "    \"pcaTotalCount\": 0,\n" +
+            "    \"continueDose\": 50,\n" +
+            "    \"pulseDose\": null,\n" +
+            "    \"pulseLockTime\": null,\n" +
+            "    \"pulseFirstLockTime\": null,\n" +
+            "    \"flowUpCycle\": null,\n" +
+            "    \"flowDownCycle\": null,\n" +
+            "    \"flowCount\": null,\n" +
+            "    \"flowUpLimit\": null,\n" +
+            "    \"flowDownLimit\": null,\n" +
+            "    \"flowAdjustRate\": null,\n" +
+            "    \"electricQuantity\": 83,\n" +
+            "    \"snr\": null,\n" +
+            "    \"rssi\": null,\n" +
+            "    \"rsrq\": null,\n" +
+            "    \"rsrp\": null,\n" +
+            "    \"modifies\": [\n" +
+            "      {\n" +
+            "        \"id\": \"1634418827867705345\",\n" +
+            "        \"createTime\": \"2023-03-11 12:59:49\",\n" +
+            "        \"createBy\": \"1\",\n" +
+            "        \"updateBy\": \"1\",\n" +
+            "        \"updateTime\": \"2023-03-11 12:59:49\",\n" +
+            "        \"tenantId\": \"43332553109747f3857e1e434e1e2ef3\",\n" +
+            "        \"deviceId\": \"43207937393702B0\",\n" +
+            "        \"classification\": \"1634418827611852802\",\n" +
+            "        \"dataNumber\": 1,\n" +
+            "        \"type\": {\n" +
+            "          \"value\": 1,\n" +
+            "          \"text\": \"持续型\"\n" +
+            "        },\n" +
+            "        \"patientCode\": null,\n" +
+            "        \"ward\": null,\n" +
+            "        \"bedNo\": null,\n" +
+            "        \"totalDose\": 5,\n" +
+            "        \"firstDose\": 5,\n" +
+            "        \"remainDose\": 1.8,\n" +
+            "        \"inputDose\": 3.2,\n" +
+            "        \"appendDose\": 0,\n" +
+            "        \"maxDose\": 90,\n" +
+            "        \"selfControlLockTime\": 0,\n" +
+            "        \"selfControlCount\": null,\n" +
+            "        \"pcaValidCount\": 0,\n" +
+            "        \"pcaInvalidCount\": 0,\n" +
+            "        \"pcaTotalCount\": 0,\n" +
+            "        \"continueDose\": 50,\n" +
+            "        \"pulseDose\": null,\n" +
+            "        \"pulseLockTime\": null,\n" +
+            "        \"pulseFirstLockTime\": null,\n" +
+            "        \"flowUpCycle\": null,\n" +
+            "        \"flowDownCycle\": null,\n" +
+            "        \"flowCount\": null,\n" +
+            "        \"flowUpLimit\": null,\n" +
+            "        \"flowDownLimit\": null,\n" +
+            "        \"flowAdjustRate\": null,\n" +
+            "        \"electricQuantity\": null,\n" +
+            "        \"snr\": null,\n" +
+            "        \"rssi\": null,\n" +
+            "        \"rsrq\": null,\n" +
+            "        \"rsrp\": null,\n" +
+            "        \"infusionId\": \"1634418827611852803\",\n" +
+            "        \"modifyTime\": \"2023-03-01 10:27:25\",\n" +
+            "        \"print\": true\n" +
+            "      }\n" +
+            "    ],\n" +
+            "    \"alias\": null,\n" +
+            "    \"print\": true,\n" +
+            "    \"finished\": 1,\n" +
+            "    \"lastUploadTime\": \"2023-03-01 10:28:34\",\n" +
+            "    \"startTime\": \"2023-03-01 10:27:25\"\n" +
+            "  },\n" +
+            "  {\n" +
+            "    \"id\": \"1634418824780697601\",\n" +
+            "    \"createTime\": \"2023-03-11 12:59:48\",\n" +
+            "    \"createBy\": \"1\",\n" +
+            "    \"updateBy\": null,\n" +
+            "    \"updateTime\": \"2023-03-11 12:59:49\",\n" +
+            "    \"tenantId\": \"43332553109747f3857e1e434e1e2ef3\",\n" +
+            "    \"deviceId\": \"43207937393702B0\",\n" +
+            "    \"classification\": \"1634418824403210243\",\n" +
+            "    \"dataNumber\": 5,\n" +
+            "    \"type\": {\n" +
+            "      \"value\": 1,\n" +
+            "      \"text\": \"持续型\"\n" +
+            "    },\n" +
+            "    \"patientCode\": \"9000000000000\",\n" +
+            "    \"ward\": \"\",\n" +
+            "    \"bedNo\": \"\",\n" +
+            "    \"totalDose\": 5,\n" +
+            "    \"firstDose\": 5,\n" +
+            "    \"remainDose\": 2.7,\n" +
+            "    \"inputDose\": 2.3,\n" +
+            "    \"appendDose\": 0,\n" +
+            "    \"maxDose\": 90,\n" +
+            "    \"selfControlLockTime\": 0,\n" +
+            "    \"selfControlCount\": null,\n" +
+            "    \"pcaValidCount\": 0,\n" +
+            "    \"pcaInvalidCount\": 0,\n" +
+            "    \"pcaTotalCount\": 0,\n" +
+            "    \"continueDose\": 50,\n" +
+            "    \"pulseDose\": null,\n" +
+            "    \"pulseLockTime\": null,\n" +
+            "    \"pulseFirstLockTime\": null,\n" +
+            "    \"flowUpCycle\": null,\n" +
+            "    \"flowDownCycle\": null,\n" +
+            "    \"flowCount\": null,\n" +
+            "    \"flowUpLimit\": null,\n" +
+            "    \"flowDownLimit\": null,\n" +
+            "    \"flowAdjustRate\": null,\n" +
+            "    \"electricQuantity\": 94,\n" +
+            "    \"snr\": null,\n" +
+            "    \"rssi\": null,\n" +
+            "    \"rsrq\": null,\n" +
+            "    \"rsrp\": null,\n" +
+            "    \"modifies\": [\n" +
+            "      {\n" +
+            "        \"id\": \"1634418825099464705\",\n" +
+            "        \"createTime\": \"2023-03-11 12:59:49\",\n" +
+            "        \"createBy\": \"1\",\n" +
+            "        \"updateBy\": \"1\",\n" +
+            "        \"updateTime\": \"2023-03-11 12:59:49\",\n" +
+            "        \"tenantId\": \"43332553109747f3857e1e434e1e2ef3\",\n" +
+            "        \"deviceId\": \"43207937393702B0\",\n" +
+            "        \"classification\": \"1634418824403210243\",\n" +
+            "        \"dataNumber\": 1,\n" +
+            "        \"type\": {\n" +
+            "          \"value\": 1,\n" +
+            "          \"text\": \"持续型\"\n" +
+            "        },\n" +
+            "        \"patientCode\": null,\n" +
+            "        \"ward\": null,\n" +
+            "        \"bedNo\": null,\n" +
+            "        \"totalDose\": 5,\n" +
+            "        \"firstDose\": 5,\n" +
+            "        \"remainDose\": 5,\n" +
+            "        \"inputDose\": 0,\n" +
+            "        \"appendDose\": 0,\n" +
+            "        \"maxDose\": 90,\n" +
+            "        \"selfControlLockTime\": 0,\n" +
+            "        \"selfControlCount\": null,\n" +
+            "        \"pcaValidCount\": 0,\n" +
+            "        \"pcaInvalidCount\": 0,\n" +
+            "        \"pcaTotalCount\": 0,\n" +
+            "        \"continueDose\": 50,\n" +
+            "        \"pulseDose\": null,\n" +
+            "        \"pulseLockTime\": null,\n" +
+            "        \"pulseFirstLockTime\": null,\n" +
+            "        \"flowUpCycle\": null,\n" +
+            "        \"flowDownCycle\": null,\n" +
+            "        \"flowCount\": null,\n" +
+            "        \"flowUpLimit\": null,\n" +
+            "        \"flowDownLimit\": null,\n" +
+            "        \"flowAdjustRate\": null,\n" +
+            "        \"electricQuantity\": null,\n" +
+            "        \"snr\": null,\n" +
+            "        \"rssi\": null,\n" +
+            "        \"rsrq\": null,\n" +
+            "        \"rsrp\": null,\n" +
+            "        \"infusionId\": \"1634418824780697601\",\n" +
+            "        \"modifyTime\": \"2023-03-01 10:25:22\",\n" +
+            "        \"print\": true\n" +
+            "      }\n" +
+            "    ],\n" +
+            "    \"alias\": null,\n" +
+            "    \"print\": true,\n" +
+            "    \"finished\": 1,\n" +
+            "    \"lastUploadTime\": \"2023-03-01 10:26:54\",\n" +
+            "    \"startTime\": \"2023-03-01 10:25:22\"\n" +
+            "  }\n" +
+            "]";
+    private ExcelHelperFactory excelHelperFactory;
+
+    private String pathPrefix="C:\\Users\\JR\\Desktop\\icon\\";
+
+    String evalStr="[\n" +
+            "  {\n" +
+            "    \"id\": \"1639553833044062209\",\n" +
+            "    \"createTime\": \"2023-03-25 17:04:29\",\n" +
+            "    \"createBy\": \"1\",\n" +
+            "    \"updateBy\": \"1\",\n" +
+            "    \"updateTime\": \"2023-03-25 17:04:29\",\n" +
+            "    \"tenantId\": \"43332553109747f3857e1e434e1e2ef3\",\n" +
+            "    \"patientId\": \"1634418824659062786\",\n" +
+            "    \"patientCode\": \"9000000000000\",\n" +
+            "    \"infusionId\": \"1634418903713304577\",\n" +
+            "    \"clinicId\": \"1634418824659062787\",\n" +
+            "    \"deviceId\": \"43207937393702B0\",\n" +
+            "    \"statics\": 5,\n" +
+            "    \"activity\": 4,\n" +
+            "    \"calm\": 2,\n" +
+            "    \"leftArm\": 2,\n" +
+            "    \"leftLeg\": 3,\n" +
+            "    \"rightArm\": 3,\n" +
+            "    \"rightLeg\": 2,\n" +
+            "    \"nauseaVomit\": 2,\n" +
+            "    \"itch\": 3,\n" +
+            "    \"vertigo\": 3,\n" +
+            "    \"soreThroat\": 2,\n" +
+            "    \"uroschesis\": 2,\n" +
+            "    \"breathDepression\": 1,\n" +
+            "    \"hoarseness\": 1,\n" +
+            "    \"cognitionObstacle\": 1,\n" +
+            "    \"other\": null,\n" +
+            "    \"satisfaction\": 0,\n" +
+            "    \"evaluateTime\": \"2023-03-25 17:04:01\",\n" +
+            "    \"evaluator\": \"测试人员\",\n" +
+            "    \"shrinkPressure\": 123,\n" +
+            "    \"diastensPressure\": 150,\n" +
+            "    \"heartRate\": 80,\n" +
+            "    \"fetalHeartRate\": 1,\n" +
+            "    \"breathRate\": 12,\n" +
+            "    \"bloodOxygenSaturation\": 1\n" +
+            "  },\n" +
+            "  {\n" +
+            "    \"id\": \"1639553955723259905\",\n" +
+            "    \"createTime\": \"2023-03-25 17:04:59\",\n" +
+            "    \"createBy\": \"1\",\n" +
+            "    \"updateBy\": \"1\",\n" +
+            "    \"updateTime\": \"2023-03-25 17:04:59\",\n" +
+            "    \"tenantId\": \"43332553109747f3857e1e434e1e2ef3\",\n" +
+            "    \"patientId\": \"1634418824659062786\",\n" +
+            "    \"patientCode\": \"9000000000000\",\n" +
+            "    \"infusionId\": \"1634418903713304577\",\n" +
+            "    \"clinicId\": \"1634418824659062787\",\n" +
+            "    \"deviceId\": \"43207937393702B0\",\n" +
+            "    \"statics\": 4,\n" +
+            "    \"activity\": 3,\n" +
+            "    \"calm\": 1,\n" +
+            "    \"leftArm\": 3,\n" +
+            "    \"leftLeg\": 2,\n" +
+            "    \"rightArm\": 3,\n" +
+            "    \"rightLeg\": 2,\n" +
+            "    \"nauseaVomit\": 2,\n" +
+            "    \"itch\": 3,\n" +
+            "    \"vertigo\": 2,\n" +
+            "    \"soreThroat\": 2,\n" +
+            "    \"uroschesis\": 1,\n" +
+            "    \"breathDepression\": 1,\n" +
+            "    \"hoarseness\": 1,\n" +
+            "    \"cognitionObstacle\": 1,\n" +
+            "    \"other\": null,\n" +
+            "    \"satisfaction\": 2,\n" +
+            "    \"evaluateTime\": \"2023-03-25 17:04:31\",\n" +
+            "    \"evaluator\": \"第二次\",\n" +
+            "    \"shrinkPressure\": 15,\n" +
+            "    \"diastensPressure\": 200,\n" +
+            "    \"heartRate\": 15,\n" +
+            "    \"fetalHeartRate\": 24,\n" +
+            "    \"breathRate\": 156,\n" +
+            "    \"bloodOxygenSaturation\": 23\n" +
+            "  },\n" +
+            "{\n" +
+            "    \"id\": \"1639553833044062209\",\n" +
+            "    \"createTime\": \"2023-03-25 17:04:29\",\n" +
+            "    \"createBy\": \"1\",\n" +
+            "    \"updateBy\": \"1\",\n" +
+            "    \"updateTime\": \"2023-03-25 17:04:29\",\n" +
+            "    \"tenantId\": \"43332553109747f3857e1e434e1e2ef3\",\n" +
+            "    \"patientId\": \"1634418824659062786\",\n" +
+            "    \"patientCode\": \"9000000000000\",\n" +
+            "    \"infusionId\": \"1634418903713304577\",\n" +
+            "    \"clinicId\": \"1634418824659062787\",\n" +
+            "    \"deviceId\": \"43207937393702B0\",\n" +
+            "    \"statics\": 5,\n" +
+            "    \"activity\": 4,\n" +
+            "    \"calm\": 2,\n" +
+            "    \"leftArm\": 2,\n" +
+            "    \"leftLeg\": 3,\n" +
+            "    \"rightArm\": 3,\n" +
+            "    \"rightLeg\": 2,\n" +
+            "    \"nauseaVomit\": 2,\n" +
+            "    \"itch\": 3,\n" +
+            "    \"vertigo\": 3,\n" +
+            "    \"soreThroat\": 2,\n" +
+            "    \"uroschesis\": 2,\n" +
+            "    \"breathDepression\": 1,\n" +
+            "    \"hoarseness\": 1,\n" +
+            "    \"cognitionObstacle\": 1,\n" +
+            "    \"other\": null,\n" +
+            "    \"satisfaction\": 0,\n" +
+            "    \"evaluateTime\": \"2023-03-25 17:04:01\",\n" +
+            "    \"evaluator\": \"测试人员\",\n" +
+            "    \"shrinkPressure\": 123,\n" +
+            "    \"diastensPressure\": 150,\n" +
+            "    \"heartRate\": 80,\n" +
+            "    \"fetalHeartRate\": 1,\n" +
+            "    \"breathRate\": 12,\n" +
+            "    \"bloodOxygenSaturation\": 1\n" +
+            "  },\n" +
+            "  {\n" +
+            "    \"id\": \"1639553955723259905\",\n" +
+            "    \"createTime\": \"2023-03-25 17:04:59\",\n" +
+            "    \"createBy\": \"1\",\n" +
+            "    \"updateBy\": \"1\",\n" +
+            "    \"updateTime\": \"2023-03-25 17:04:59\",\n" +
+            "    \"tenantId\": \"43332553109747f3857e1e434e1e2ef3\",\n" +
+            "    \"patientId\": \"1634418824659062786\",\n" +
+            "    \"patientCode\": \"9000000000000\",\n" +
+            "    \"infusionId\": \"1634418903713304577\",\n" +
+            "    \"clinicId\": \"1634418824659062787\",\n" +
+            "    \"deviceId\": \"43207937393702B0\",\n" +
+            "    \"statics\": 4,\n" +
+            "    \"activity\": 3,\n" +
+            "    \"calm\": 1,\n" +
+            "    \"leftArm\": 3,\n" +
+            "    \"leftLeg\": 2,\n" +
+            "    \"rightArm\": 3,\n" +
+            "    \"rightLeg\": 2,\n" +
+            "    \"nauseaVomit\": 2,\n" +
+            "    \"itch\": 3,\n" +
+            "    \"vertigo\": 2,\n" +
+            "    \"soreThroat\": 2,\n" +
+            "    \"uroschesis\": 1,\n" +
+            "    \"breathDepression\": 1,\n" +
+            "    \"hoarseness\": 1,\n" +
+            "    \"cognitionObstacle\": 1,\n" +
+            "    \"other\": null,\n" +
+            "    \"satisfaction\": 2,\n" +
+            "    \"evaluateTime\": \"2023-03-25 17:04:31\",\n" +
+            "    \"evaluator\": \"第二次\",\n" +
+            "    \"shrinkPressure\": 15,\n" +
+            "    \"diastensPressure\": 200,\n" +
+            "    \"heartRate\": 15,\n" +
+            "    \"fetalHeartRate\": 24,\n" +
+            "    \"breathRate\": 156,\n" +
+            "    \"bloodOxygenSaturation\": 23\n" +
+            "  },\n" +
+            "{\n" +
+            "    \"id\": \"1639553833044062209\",\n" +
+            "    \"createTime\": \"2023-03-25 17:04:29\",\n" +
+            "    \"createBy\": \"1\",\n" +
+            "    \"updateBy\": \"1\",\n" +
+            "    \"updateTime\": \"2023-03-25 17:04:29\",\n" +
+            "    \"tenantId\": \"43332553109747f3857e1e434e1e2ef3\",\n" +
+            "    \"patientId\": \"1634418824659062786\",\n" +
+            "    \"patientCode\": \"9000000000000\",\n" +
+            "    \"infusionId\": \"1634418903713304577\",\n" +
+            "    \"clinicId\": \"1634418824659062787\",\n" +
+            "    \"deviceId\": \"43207937393702B0\",\n" +
+            "    \"statics\": 5,\n" +
+            "    \"activity\": 4,\n" +
+            "    \"calm\": 2,\n" +
+            "    \"leftArm\": 2,\n" +
+            "    \"leftLeg\": 3,\n" +
+            "    \"rightArm\": 3,\n" +
+            "    \"rightLeg\": 2,\n" +
+            "    \"nauseaVomit\": 2,\n" +
+            "    \"itch\": 3,\n" +
+            "    \"vertigo\": 3,\n" +
+            "    \"soreThroat\": 2,\n" +
+            "    \"uroschesis\": 2,\n" +
+            "    \"breathDepression\": 1,\n" +
+            "    \"hoarseness\": 1,\n" +
+            "    \"cognitionObstacle\": 1,\n" +
+            "    \"other\": null,\n" +
+            "    \"satisfaction\": 0,\n" +
+            "    \"evaluateTime\": \"2023-03-25 17:04:01\",\n" +
+            "    \"evaluator\": \"测试人员\",\n" +
+            "    \"shrinkPressure\": 123,\n" +
+            "    \"diastensPressure\": 150,\n" +
+            "    \"heartRate\": 80,\n" +
+            "    \"fetalHeartRate\": 1,\n" +
+            "    \"breathRate\": 12,\n" +
+            "    \"bloodOxygenSaturation\": 1\n" +
+            "  },\n" +
+            "  {\n" +
+            "    \"id\": \"1639553955723259905\",\n" +
+            "    \"createTime\": \"2023-03-25 17:04:59\",\n" +
+            "    \"createBy\": \"1\",\n" +
+            "    \"updateBy\": \"1\",\n" +
+            "    \"updateTime\": \"2023-03-25 17:04:59\",\n" +
+            "    \"tenantId\": \"43332553109747f3857e1e434e1e2ef3\",\n" +
+            "    \"patientId\": \"1634418824659062786\",\n" +
+            "    \"patientCode\": \"9000000000000\",\n" +
+            "    \"infusionId\": \"1634418903713304577\",\n" +
+            "    \"clinicId\": \"1634418824659062787\",\n" +
+            "    \"deviceId\": \"43207937393702B0\",\n" +
+            "    \"statics\": 4,\n" +
+            "    \"activity\": 3,\n" +
+            "    \"calm\": 1,\n" +
+            "    \"leftArm\": 3,\n" +
+            "    \"leftLeg\": 2,\n" +
+            "    \"rightArm\": 3,\n" +
+            "    \"rightLeg\": 2,\n" +
+            "    \"nauseaVomit\": 2,\n" +
+            "    \"itch\": 3,\n" +
+            "    \"vertigo\": 2,\n" +
+            "    \"soreThroat\": 2,\n" +
+            "    \"uroschesis\": 1,\n" +
+            "    \"breathDepression\": 1,\n" +
+            "    \"hoarseness\": 1,\n" +
+            "    \"cognitionObstacle\": 1,\n" +
+            "    \"other\": null,\n" +
+            "    \"satisfaction\": 2,\n" +
+            "    \"evaluateTime\": \"2023-03-25 17:04:31\",\n" +
+            "    \"evaluator\": \"第二次\",\n" +
+            "    \"shrinkPressure\": 15,\n" +
+            "    \"diastensPressure\": 200,\n" +
+            "    \"heartRate\": 15,\n" +
+            "    \"fetalHeartRate\": 24,\n" +
+            "    \"breathRate\": 156,\n" +
+            "    \"bloodOxygenSaturation\": 23\n" +
+            "  },{\n" +
+            "    \"id\": \"1639553833044062209\",\n" +
+            "    \"createTime\": \"2023-03-25 17:04:29\",\n" +
+            "    \"createBy\": \"1\",\n" +
+            "    \"updateBy\": \"1\",\n" +
+            "    \"updateTime\": \"2023-03-25 17:04:29\",\n" +
+            "    \"tenantId\": \"43332553109747f3857e1e434e1e2ef3\",\n" +
+            "    \"patientId\": \"1634418824659062786\",\n" +
+            "    \"patientCode\": \"9000000000000\",\n" +
+            "    \"infusionId\": \"1634418903713304577\",\n" +
+            "    \"clinicId\": \"1634418824659062787\",\n" +
+            "    \"deviceId\": \"43207937393702B0\",\n" +
+            "    \"statics\": 5,\n" +
+            "    \"activity\": 4,\n" +
+            "    \"calm\": 2,\n" +
+            "    \"leftArm\": 2,\n" +
+            "    \"leftLeg\": 3,\n" +
+            "    \"rightArm\": 3,\n" +
+            "    \"rightLeg\": 2,\n" +
+            "    \"nauseaVomit\": 2,\n" +
+            "    \"itch\": 3,\n" +
+            "    \"vertigo\": 3,\n" +
+            "    \"soreThroat\": 2,\n" +
+            "    \"uroschesis\": 2,\n" +
+            "    \"breathDepression\": 1,\n" +
+            "    \"hoarseness\": 1,\n" +
+            "    \"cognitionObstacle\": 1,\n" +
+            "    \"other\": null,\n" +
+            "    \"satisfaction\": 0,\n" +
+            "    \"evaluateTime\": \"2023-03-25 17:04:01\",\n" +
+            "    \"evaluator\": \"测试人员\",\n" +
+            "    \"shrinkPressure\": 123,\n" +
+            "    \"diastensPressure\": 150,\n" +
+            "    \"heartRate\": 80,\n" +
+            "    \"fetalHeartRate\": 1,\n" +
+            "    \"breathRate\": 12,\n" +
+            "    \"bloodOxygenSaturation\": 1\n" +
+            "  },\n" +
+            "  {\n" +
+            "    \"id\": \"1639553955723259905\",\n" +
+            "    \"createTime\": \"2023-03-25 17:04:59\",\n" +
+            "    \"createBy\": \"1\",\n" +
+            "    \"updateBy\": \"1\",\n" +
+            "    \"updateTime\": \"2023-03-25 17:04:59\",\n" +
+            "    \"tenantId\": \"43332553109747f3857e1e434e1e2ef3\",\n" +
+            "    \"patientId\": \"1634418824659062786\",\n" +
+            "    \"patientCode\": \"9000000000000\",\n" +
+            "    \"infusionId\": \"1634418903713304577\",\n" +
+            "    \"clinicId\": \"1634418824659062787\",\n" +
+            "    \"deviceId\": \"43207937393702B0\",\n" +
+            "    \"statics\": 4,\n" +
+            "    \"activity\": 3,\n" +
+            "    \"calm\": 1,\n" +
+            "    \"leftArm\": 3,\n" +
+            "    \"leftLeg\": 2,\n" +
+            "    \"rightArm\": 3,\n" +
+            "    \"rightLeg\": 2,\n" +
+            "    \"nauseaVomit\": 2,\n" +
+            "    \"itch\": 3,\n" +
+            "    \"vertigo\": 2,\n" +
+            "    \"soreThroat\": 2,\n" +
+            "    \"uroschesis\": 1,\n" +
+            "    \"breathDepression\": 1,\n" +
+            "    \"hoarseness\": 1,\n" +
+            "    \"cognitionObstacle\": 1,\n" +
+            "    \"other\": null,\n" +
+            "    \"satisfaction\": 2,\n" +
+            "    \"evaluateTime\": \"2023-03-25 17:04:31\",\n" +
+            "    \"evaluator\": \"第二次\",\n" +
+            "    \"shrinkPressure\": 15,\n" +
+            "    \"diastensPressure\": 200,\n" +
+            "    \"heartRate\": 15,\n" +
+            "    \"fetalHeartRate\": 24,\n" +
+            "    \"breathRate\": 156,\n" +
+            "    \"bloodOxygenSaturation\": 23\n" +
+            "  }\n" +
+            "]";
+    @BeforeEach
+    public void setUp(){
+        ObjectMapper objectMapper = new ObjectMapper();
+        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+        objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
+        JsonUtils.init(objectMapper);
+    }
+    @Test
+    public void patientInfo() throws Exception {
+
+
+        File file= FileUtil.touch(pathPrefix+"patientTmp.docx");
+        BusClinicEntity clinic = BusClinicEntity
+                .builder()
+                .patientName("张三")
+                .patientCode("100546231")
+                .bedNo("10号床")
+                .patientAge(29)
+                .height("175")
+                .weight("120")
+                .ward("2号病区")
+                .asa("Ⅲ")
+                .anaDoctor("张俊")
+                .anaType("全麻")
+                .surgeryName("股骨骨折切开复位钢板内固定术")
+                .build();
+        Map<String, Object> exampleData = JsonUtils.parseMap(JsonUtils.toJsonString(clinic));
+        NiceXWPFDocument  document=XWPFTemplate.compile(new FileInputStream(file))
+                .render(exampleData)
+                .getXWPFDocument();
+
+        BufferedInputStream inputStream = FileUtil.getInputStream(FileUtil.file(pathPrefix + "EXXT.jpg"));
+        byte[] bytes = IoUtil.readBytes(inputStream);
+        String encode = cn.hutool.core.codec.Base64.encode(bytes);
+        document=infusionInfo(document);
+        document=eval(document);
+        document=image(document,encode);
+        //文件输出流
+        FileOutputStream out = new FileOutputStream(pathPrefix+"patient.docx");
+        BufferedOutputStream bos = new BufferedOutputStream(out);
+        document.write(bos);
+        bos.flush();
+        out.flush();
+        out.close();
+
+        //模板名称
+        //病人信息
+    }
+
+    @Test
+    public NiceXWPFDocument image(NiceXWPFDocument document,String base64) throws Exception {
+        document.createParagraph().createRun().addBreak(BreakType.PAGE);
+        XWPFRun run = document.createParagraph().createRun();
+        base64= FileUtil.readString("E:\\Project\\tr-footstone\\tr-plugins\\tr-spring-boot-starter-plugin-biz-excel\\src\\main\\resources\\base64", Charset.defaultCharset());
+//
+//        run.addPicture(new FileInputStream(pathPrefix+"EXXT.jpg"), XWPFDocument.PICTURE_TYPE_PNG,"输注统计分析图",687,500);
+        byte[] image = Base64.decode(base64);
+        document=document.merge(XWPFTemplate.compile(new FileInputStream(pathPrefix+"imageTmp.docx"))
+                .render(MapUtil.builder()
+                        . put("image", Pictures.ofBase64(base64,PictureType.PNG)
+                                .size(687, 500).create())
+                        .build())
+                .getXWPFDocument());
+        return document;
+    }
+
+
+    @Test
+    public NiceXWPFDocument eval(NiceXWPFDocument xwpfDocument) throws Exception {
+        xwpfDocument.createParagraph().createRun().addBreak(BreakType.PAGE);
+        LoopColumnTableRenderPolicy  policy  = new LoopColumnTableRenderPolicy();
+        File file= FileUtil.touch(pathPrefix+"evalTmp.docx");
+        JSONArray jsonArray = JSONUtil.parseArray(evalStr);
+        Configure config = Configure.builder()
+                .bind("evals", policy)
+                .build();
+
+        xwpfDocument=xwpfDocument.merge(XWPFTemplate.compile(new FileInputStream(file), config).render(MapUtil.builder()
+                .put("evals",jsonArray)
+                .build())
+                .getXWPFDocument());
+        return xwpfDocument;
+    }
+    @Test
+    public  NiceXWPFDocument infusionInfo(NiceXWPFDocument xwpfDocument) throws Exception {
+        xwpfDocument.createParagraph().createRun().addBreak(BreakType.PAGE);
+        LoopRowTableRenderPolicy policy  = new LoopRowTableRenderPolicy();
+        File file= FileUtil.touch(pathPrefix+"infusionHistoryTmp.docx");
+        JSONArray jsonArray = JSONUtil.parseArray(str);
+        Configure config = Configure.builder()
+                .bind("modifies", policy)
+                .build();
+        for (Object o : jsonArray) {
+            xwpfDocument=xwpfDocument.merge(XWPFTemplate.compile(new FileInputStream(file), config).render(o).getXWPFDocument());
+        }
+        return xwpfDocument;
+    }
+    @Data
+    @Builder
+    @Accessors(chain = true)
+    static class BusClinicEntity  {
+
+        private String patientName;
+        private String patientCode;
+        private String bedNo;
+        //        private SexEnum patientGender;
+        private Integer patientAge;
+        private String height;
+        private String weight;
+        private String ward;
+        private String asa;
+        private String anaDoctor;
+        private String anaType;
+        //        private FormulaDrugDomain formula;
+        private String surgeryName;
+    }
+
+    @Data
+    @NoArgsConstructor
+    static class ClinicAnalInfusionRecord extends DeviceProperties<String,String> {
+        private List<ClinicAnalInfusionModify> modifies;
+
+        private String alias;
+
+        private boolean print;
+
+        private Boolean finished;
+
+        private Date lastUploadTime;
+
+        private Date startTime;
+    }
+
+    @Data
+    static class ClinicAnalInfusionModify extends DeviceProperties<String,String> {
+        private String infusionId;
+
+        private Date modifyTime;
+
+        private boolean print;
+    }
+
+
+
+
+
+    @Data
+    static class DeviceProperties<K,T>  {
+        private String deviceId;
+
+        private String classification;
+
+        private Integer dataNumber;
+
+
+        private String patientCode;
+
+        private String ward;
+
+        private String bedNo;
+
+        private Integer totalDose;
+
+        private Integer firstDose;
+
+
+        private BigDecimal remainDose;
+
+        private BigDecimal inputDose;
+
+        private BigDecimal appendDose;
+
+//    @ApiModelProperty(value = "公共参数-追加锁时",accessMode = ApiModelProperty.AccessMode.READ_ONLY)
+//    @DecimalMax(value = "99",message = "PCA追加量最大值不得超过99")
+//    @DecimalMin(value = "1",message ="PCA追加量最小值不得低于0" )
+//    private BigDecimal appendLockTime;
+
+        private BigDecimal maxDose;
+
+        private BigDecimal selfControlLockTime;
+
+        private Integer selfControlCount;
+
+        private Integer pcaValidCount;
+
+        private Integer pcaInvalidCount;
+
+        private Integer pcaTotalCount;
+
+        private BigDecimal continueDose;
+
+        private Integer pulseDose;
+
+        private Integer pulseLockTime;
+
+        private Integer pulseFirstLockTime;
+
+        private BigDecimal flowUpCycle;
+
+
+        private BigDecimal flowDownCycle;
+
+        private BigDecimal flowCount;
+
+        private BigDecimal flowUpLimit;
+
+        private BigDecimal flowDownLimit;
+
+        private BigDecimal flowAdjustRate;
+
+        private Integer electricQuantity;
+
+
+        public Integer getPcaTotalCount() {
+            return getPcaInvalidCount()+getPcaValidCount();
+        }
+
+
+        public Integer getPcaValidCount() {
+            return Optional.ofNullable(pcaValidCount).orElse(0);
+        }
+
+
+        public Integer getPcaInvalidCount() {
+            return Optional.ofNullable(pcaInvalidCount).orElse(0);
+        }
+    }
+
+}

+ 61 - 0
tr-plugins/tr-spring-boot-starter-plugin-mybatis/src/main/java/cn/tr/plugin/mybatis/base/BaseController.java

@@ -0,0 +1,61 @@
+package cn.tr.plugin.mybatis.base;
+
+import cn.tr.core.exception.TRExcCode;
+import cn.tr.core.pojo.CommonResult;
+import cn.tr.core.pojo.PageInfo;
+import cn.tr.core.pojo.TableDataInfo;
+import cn.tr.core.strategy.PageStrategy;
+import com.github.pagehelper.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.Collection;
+
+/**
+ * web层通用数据处理
+ * 
+ * @author ruoyi
+ */
+@Slf4j
+public class BaseController {
+
+    /**
+     * 设置请求分页数据
+     */
+    protected void startPage() {
+        PageStrategy.tr.startPage.accept(PageStrategy.tr.createPage.get());
+    }
+
+    /**
+     * 响应请求分页数据
+     */
+    @SuppressWarnings({ "rawtypes", "unchecked" })
+    protected <T> TableDataInfo<T> getDataTable(Collection<T> list) {
+        TableDataInfo<T> rspData = new TableDataInfo();
+        rspData.setCode(TRExcCode.SUCCESS.getErrCode());
+        Page<?> localPage = PageStrategy.tr.getPage.get();
+        PageInfo<T> page = PageInfo.of(localPage.getTotal(),localPage.getPageNum(), localPage.getPageSize(), list);
+        rspData.setData(page);
+        return rspData;
+    }
+
+    /**
+     * 响应返回结果
+     * 
+     * @param rows 影响行数
+     * @return 操作结果
+     */
+    protected CommonResult<Integer> toResult(int rows) {
+        return rows > 0 ? CommonResult.success(rows) : CommonResult.success(0);
+    }
+
+    /**
+     * 响应返回结果
+     * 
+     * @param result 结果
+     * @return 操作结果
+     */
+    protected CommonResult<Boolean> toResult(boolean result) {
+        return result ? CommonResult.success(true) :CommonResult.success(false);
+    }
+
+}

+ 1 - 1
tr-plugins/tr-spring-boot-starter-plugin-mybatis/src/main/java/cn/tr/plugin/mybatis/config/page/PageConfig.java

@@ -33,7 +33,7 @@ public class PageConfig {
             if(StrUtil.isNotEmpty(orderBy)){
                 page.setOrderBy(orderBy);
             }
-            PageContextHolder.setPage(pageDomain);
+            PageContextHolder.setPage(page);
         };
 
 

+ 4 - 3
tr-plugins/tr-spring-boot-starter-plugin-mybatis/src/main/java/cn/tr/plugin/mybatis/context/PageContextHolder.java

@@ -3,6 +3,7 @@ package cn.tr.plugin.mybatis.context;
 import cn.tr.core.context.SecurityContextHolder;
 import cn.tr.core.pojo.PageDomain;
 import cn.tr.core.constant.MybatisConstant;
+import com.github.pagehelper.Page;
 
 /**
  * @ClassName : PageContextHolder
@@ -12,11 +13,11 @@ import cn.tr.core.constant.MybatisConstant;
  */
 
 public class PageContextHolder {
-    public static void setPage(PageDomain page){
+    public static void setPage(Page<?> page){
         SecurityContextHolder.set(MybatisConstant.PAGE_CACHE,page);
     }
 
-    public static PageDomain getPage(){
-        return SecurityContextHolder.get(MybatisConstant.PAGE_CACHE,PageDomain.class);
+    public static Page<?> getPage(){
+        return SecurityContextHolder.get(MybatisConstant.PAGE_CACHE,Page.class);
     }
 }

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů