diff --git a/physical-base-core/pom.xml b/physical-base-core/pom.xml
index 90d540d..4af7454 100644
--- a/physical-base-core/pom.xml
+++ b/physical-base-core/pom.xml
@@ -287,16 +287,6 @@
-
- org.apache.poi
- poi
- 4.1.2
-
-
- org.apache.poi
- poi-ooxml
- 4.1.2
-
org.jeecgframework.boot3
autopoi-web
@@ -374,6 +364,16 @@
cn.hutool
hutool-crypto
-
+
+ org.jeecgframework.boot3
+ autopoi
+ 3.7.0
+ compile
+
+
+ com.deepoove
+ poi-tl
+ 1.12.2
+
\ No newline at end of file
diff --git a/physical-launcher/src/main/resources/application-dev.yml b/physical-launcher/src/main/resources/application-dev.yml
index afcc277..918c458 100644
--- a/physical-launcher/src/main/resources/application-dev.yml
+++ b/physical-launcher/src/main/resources/application-dev.yml
@@ -1,4 +1,5 @@
server:
+ ip: 47.102.126.67
port: 8080
undertow:
# 平替 tomcat server.tomcat.max-swallow-siz, undertow该值默认为-1
diff --git a/physical-launcher/src/main/resources/application-prod.yml b/physical-launcher/src/main/resources/application-prod.yml
index ebea8f3..d5045a7 100644
--- a/physical-launcher/src/main/resources/application-prod.yml
+++ b/physical-launcher/src/main/resources/application-prod.yml
@@ -1,4 +1,5 @@
server:
+ ip: 47.102.126.67
port: 8080
undertow:
# 平替 tomcat server.tomcat.max-swallow-siz, undertow该值默认为-1
diff --git a/physical-module-system/physical-system-biz/pom.xml b/physical-module-system/physical-system-biz/pom.xml
index 1656d31..eb4c853 100644
--- a/physical-module-system/physical-system-biz/pom.xml
+++ b/physical-module-system/physical-system-biz/pom.xml
@@ -14,20 +14,10 @@
- org.apache.poi
- poi
- 4.1.2
+ com.deepoove
+ poi-tl
+ 1.12.2
-
- org.apache.poi
- poi-ooxml
- 4.1.2
-
-
-
-
-
-
org.jeecgframework.boot
physical-system-api
diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/impl/ExperimentDocServiceImpl.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/impl/ExperimentDocServiceImpl.java
index 425ffa5..63c9d65 100755
--- a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/impl/ExperimentDocServiceImpl.java
+++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/impl/ExperimentDocServiceImpl.java
@@ -5,8 +5,12 @@ import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.file.PathUtil;
+import com.alibaba.fastjson.*;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.data.Tables;
+import com.deepoove.poi.data.style.BorderStyle;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xwpf.usermodel.*;
@@ -17,16 +21,17 @@ import org.jeecg.modules.database.mapper.ExperimentDocMapper;
import org.jeecg.modules.database.service.*;
import org.jeecg.modules.system.entity.SysUser;
import org.jeecg.modules.system.service.ISysUserService;
-import org.jeecgframework.poi.word.WordExportUtil;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
-import java.io.*;
+import java.io.File;
+import java.io.IOException;
import java.math.BigInteger;
import java.nio.file.Path;
import java.util.*;
+import java.util.stream.Collectors;
/**
* @Description: 试验文档
@@ -40,6 +45,8 @@ public class ExperimentDocServiceImpl extends ServiceImpl docTempalteMap = new HashMap<>();
@@ -94,20 +103,25 @@ public class ExperimentDocServiceImpl extends ServiceImpl params = assembleParams(experimentId, fileName);
- XWPFDocument document = WordExportUtil.exportWord07(absolutePath, params);
+ XWPFTemplate render = XWPFTemplate.compile(absolutePath).render(params);
+ /* NiceXWPFDocument document = render.getXWPFDocument();
+ //render
+ //.writeToFile(outputFile);
+ //XWPFDocument document = WordExportUtil.exportWord07(absolutePath, params);
List headers = document.getHeaderList();
// 遍历所有节,确保每个节的页眉都添加了页码
for (XWPFHeader h : headers) {
// 添加页码到每个节的页眉
- addPageNumberToHeader("报告编号:" + experiment.getExperimentNo(), h);
+ //addPageNumberToHeader("报告编号:" + experiment.getExperimentNo(), h);
}
try (FileOutputStream out = new FileOutputStream(outputFile)) {
document.write(out);
}
- document.close();
+ document.close();*/
+ render.writeToFile(outputFile);
String path = MinioUtil.upload(FileUtil.getInputStream(outputFile),
"experiment_doc/" + experimentId + "/" + version + "/" + experiment.getName() + "-" + fileName + ".docx");
return path;
@@ -213,33 +227,76 @@ public class ExperimentDocServiceImpl extends ServiceImpl experimentTestProcesses = experimentTestProcessService.getByExperimentId(experiment.getId());
if (CollUtil.isNotEmpty(experimentTestProcesses)) {
- String testStandardsId = experimentTestProcesses.get(0).getTestStandardsId();
+ ExperimentTestProcess experimentTestProcess = experimentTestProcesses.get(0);
+ String testStandardsId = experimentTestProcess.getTestStandardsId();
Optional testStandards = Optional.ofNullable(testStandardsService.getById(testStandardsId));
params.put("标准代号", testStandards.map(TestStandards::getCode).orElse(""));
params.put("标准名称", testStandards.map(TestStandards::getName).orElse(""));
Path lastPathEle = PathUtil.getLastPathEle(Path.of(testStandards.map(TestStandards::getAttachment).orElse("")).getFileName());
params.put("依据的文件名称", lastPathEle.toString());
+
+ String testParameters = experimentTestProcess.getTestParameters();
+ if (StringUtils.isNotBlank(testParameters)) {
+ JSONArray jsonObject = JSON.parseArray(testParameters);
+ String collect = jsonObject.stream().map(v -> ((JSONObject) v).getString("name")).collect(Collectors.joining(","));
+ params.put("测试参数", collect);
+ }
+ params.put("测试环境温度", experimentTestProcess.getEnvironmentalTemperature());
+ params.put("测试环境湿度", experimentTestProcess.getEnvironmentalHumidity());
}
- params.put("样品名称", experiment.getExperimentNo());
- params.put("样品型号", experiment.getExperimentNo());
- params.put("批次", experiment.getExperimentNo());
- params.put("编号", experiment.getExperimentNo());
- params.put("厂家名称", experiment.getExperimentNo());
- params.put("数量", experiment.getExperimentNo());
- params.put("试验日期", experiment.getExperimentNo());
- params.put("负责人名称", experiment.getExperimentNo());
- params.put("剂量管理员名称", experiment.getExperimentNo());
- params.put("操作员名称", experiment.getExperimentNo());
- params.put("辐射源名称", experiment.getExperimentNo());
- params.put("注量率", experiment.getExperimentNo());
- params.put("注量点", experiment.getExperimentNo());
- params.put("总注量", experiment.getExperimentNo());
- params.put("温度", experiment.getExperimentNo());
- params.put("能量", experiment.getExperimentNo());
- params.put("偏置原理图", experiment.getExperimentNo());
- params.put("测试参数", experiment.getExperimentNo());
- params.put("测试环境温度", experiment.getExperimentNo());
- params.put("测试环境湿度", experiment.getExperimentNo());
+ List sampleInfoList = experiment.getSampleInfoList();
+ if (CollUtil.isNotEmpty(sampleInfoList)) {
+ for (int i = 0; i < sampleInfoList.size(); i++) {
+ ExperimentSampleInfo info = sampleInfoList.get(i);
+ params.put("table" + i, Tables.of(
+ new String[][] {new String[] {"试验样品名称", info.getSampleName(), "试验样品型号", info.getSampleModel()},
+ new String[] {"批 次", info.getSampleBatch(), "试验样品编号", info.getSampleType()},
+ new String[] {"生产厂家", info.getSampleManufacturer(), "试验样品数量", sampleInfoList.size() + ""},
+ new String[] {"放置地点", "", "接收日期", ""},}).border(BorderStyle.DEFAULT).create());
+ }
+ }
+
+ params.put("试验日期", experiment.getStartDate() + " ~ " + experiment.getEndDate());
+ params.put("负责人名称", experiment.getSupervisorName());
+ params.put("剂量管理员名称", "");
+ String operatorName = experiment.getExperimentUserList().stream().map(v -> v.getUserName()).collect(Collectors.joining(","));
+ params.put("操作员名称", operatorName);
+ List radiationProcessList = experimentRadiationProcessService.getByExperimentId(experimentId);
+ if (CollUtil.isNotEmpty(radiationProcessList)) {
+ String name = radiationProcessList.stream().map(v -> v.getRadiationSource()).collect(Collectors.joining(","));
+ params.put("辐射源名称", name);
+ String lv = radiationProcessList.stream().map(v -> v.getMeasurementRate()).collect(Collectors.joining(","));
+ params.put("辐照注量率", lv);
+ params.put("累积注量点", "");
+ String temp = radiationProcessList.stream().map(v -> v.getEnvironmentalTemperature()).collect(Collectors.joining(","));
+ params.put("辐照环境温度", temp);
+
+ }
+ params.put("辐照总注量", experiment.getExperimentNo());
+ params.put("实际能量", experiment.getExperimentNo());
+
+ String imgUrls = latestReport.getImgUrls();
+ if (!StringUtils.startsWith(imgUrls, "http")) {
+ imgUrls = "http://" + serverIp + imgUrls;
+ }
+ params.put("偏置原理图", imgUrls);
+
+ List deviationEquipmentList = experiment.getDeviationEquipmentList();
+ String[][] strings = new String[deviationEquipmentList.size() + 1][5];
+ strings[0] = new String[] {"序号", "名称", "编号", "计量有效期", "备注"};
+
+ if (CollUtil.isNotEmpty(deviationEquipmentList)) {
+ for (int i = 0; i < deviationEquipmentList.size(); i++) {
+ ExperimentDeviationEquipment deviationEquipment = deviationEquipmentList.get(i);
+ strings[i + 1] = new String[] {(i + 1) + "",
+ Optional.ofNullable(deviationEquipment.getEquipmentName()).orElse(""),
+ Optional.ofNullable(deviationEquipment.getEquipmentNo()).orElse(""),
+ Optional.ofNullable(deviationEquipment.getMeasurementValidity()).orElse(""),
+ Optional.ofNullable(deviationEquipment.getRoomNo()).orElse(""),
+ };
+ }
+ }
+ params.put("装置表格", Tables.of(strings).border(BorderStyle.DEFAULT).create());
return params;
}
diff --git a/pom.xml b/pom.xml
index a80b864..0da1ca2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -56,7 +56,7 @@
3.11.0
3.2.2
1.4.9
- 1.4.11
+ 3.7.0
8.5.7
1.4.0
1.6.1
@@ -72,6 +72,7 @@
physical-base-core
physical-module-system
physical-launcher
+ autopoi
diff --git a/templates/sybg.docx b/templates/sybg.docx
index 56b6795..281df3f 100644
Binary files a/templates/sybg.docx and b/templates/sybg.docx differ