This commit is contained in:
ls
2025-02-12 16:37:45 +08:00
parent f755c9d0f5
commit 73d5de587f
10 changed files with 142 additions and 23 deletions

View File

@@ -9,8 +9,10 @@ import com.alibaba.fastjson.*;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.data.Tables; import com.deepoove.poi.data.Tables;
import com.deepoove.poi.data.style.BorderStyle; import com.deepoove.poi.data.style.BorderStyle;
import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xwpf.usermodel.*; import org.apache.poi.xwpf.usermodel.*;
@@ -52,6 +54,8 @@ public class ExperimentDocServiceImpl extends ServiceImpl<ExperimentDocMapper, E
@Autowired @Autowired
private IExperimentReportService experimentReportService; private IExperimentReportService experimentReportService;
@Autowired @Autowired
private IExperimentDeviationEquipmentService experimentDeviationEquipmentService;
@Autowired
private ISysUserService sysUserService; private ISysUserService sysUserService;
@Autowired @Autowired
@@ -102,8 +106,9 @@ public class ExperimentDocServiceImpl extends ServiceImpl<ExperimentDocMapper, E
FileUtil.del(outputFile); FileUtil.del(outputFile);
} }
log.info("output file path: " + outputFile); log.info("output file path: " + outputFile);
Map<String, Object> params = assembleParams(experimentId, fileName); assembleParams(experimentId, fileName, outputFile);
XWPFTemplate render = XWPFTemplate.compile(absolutePath).render(params); //XWPFTemplate render = XWPFTemplate.compile(absolutePath).render(params);
//render.writeToFile(outputFile);
/* NiceXWPFDocument document = render.getXWPFDocument(); /* NiceXWPFDocument document = render.getXWPFDocument();
//render //render
//.writeToFile(outputFile); //.writeToFile(outputFile);
@@ -121,7 +126,6 @@ public class ExperimentDocServiceImpl extends ServiceImpl<ExperimentDocMapper, E
document.write(out); document.write(out);
} }
document.close();*/ document.close();*/
render.writeToFile(outputFile);
String path = MinioUtil.upload(FileUtil.getInputStream(outputFile), String path = MinioUtil.upload(FileUtil.getInputStream(outputFile),
"experiment_doc/" + experimentId + "/" + version + "/" + experiment.getName() + "-" + fileName + ".docx"); "experiment_doc/" + experimentId + "/" + version + "/" + experiment.getName() + "-" + fileName + ".docx");
return path; return path;
@@ -181,25 +185,91 @@ public class ExperimentDocServiceImpl extends ServiceImpl<ExperimentDocMapper, E
} }
private Map<String, Object> assembleParams(String experimentId, String type) { private Map<String, Object> assembleParams(String experimentId, String type, String outputFile) throws IOException {
String absolutePath = templatePath + File.separator + docTempalteMap.get(type);
switch (type) { switch (type) {
case "辐照试验计划表": case "辐照试验计划表":
return assembleFzsyjhb(experimentId); Map<String, Object> jhparams = assembleFzsyjhb(experimentId);
XWPFTemplate jhrender = XWPFTemplate.compile(absolutePath).render(jhparams);
jhrender.writeToFile(outputFile);
break;
case "试验报告评审表": case "试验报告评审表":
return assembleSybgpsb(experimentId); Map<String, Object> psparams = assembleSybgpsb(experimentId);
XWPFTemplate psrender = XWPFTemplate.compile(absolutePath).render(psparams);
psrender.writeToFile(outputFile);
break;
case "设备使用记录表": case "设备使用记录表":
return assembleSbsyjlb(experimentId); Map<String, Object> sbParams = assembleSbsyjlb(experimentId);
LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy();
Configure config = Configure.builder().bind("equipment", policy).build();
XWPFTemplate template = XWPFTemplate.compile(absolutePath, config).render(sbParams);
template.writeToFile(outputFile);
break;
case "试验报告": case "试验报告":
return assembleSybg(experimentId); Map<String, Object> params = assembleSybg(experimentId);
XWPFTemplate render = XWPFTemplate.compile(absolutePath).render(params);
render.writeToFile(outputFile);
break;
case "辐照试验总结单": case "辐照试验总结单":
return assembleFzsyzjd(experimentId); Map<String, Object> zjdParams = assembleFzsyzjd(experimentId);
LoopRowTableRenderPolicy zjdpolicy = new LoopRowTableRenderPolicy();
Configure zjdconfig = Configure.builder().bind("sample", zjdpolicy).build();
XWPFTemplate zjdtemplate = XWPFTemplate.compile(absolutePath, zjdconfig).render(zjdParams);
zjdtemplate.writeToFile(outputFile);
break;
} }
return new HashMap<>(); return new HashMap<>();
} }
private Map<String, Object> assembleFzsyzjd(String experimentId) { private Map<String, Object> assembleFzsyzjd(String experimentId) {
Experiment experiment = experimentService.getById(experimentId);
experimentService.fetchExperimentDetail(experiment);
if (Objects.isNull(experiment)) {
return new HashMap<>(); return new HashMap<>();
} }
Map<String, Object> root = new HashMap<>();
root.put("试验编号", experiment.getExperimentNo());
Client client = clientService.getOne(new LambdaQueryWrapper<Client>().eq(Client::getName, experiment.getClientName()), false);
root.put("委托方单位名称", Optional.ofNullable(client).map(Client::getName).orElse(""));
String startDate = formatDate(experiment.getStartDate());
String endDate = formatDate(experiment.getEndDate());
root.put("试验时间", StringUtils.joinWith(" ~ ", startDate, endDate));
List<ExperimentRadiationProcess> radiationProcessList = experimentRadiationProcessService.getByExperimentId(experimentId);
String collect = radiationProcessList.stream().map(v -> v.getRadiationSource()).collect(Collectors.joining(","));
root.put("辐射源", collect);
String temp = radiationProcessList.stream().map(v -> v.getEnvironmentalTemperature()).collect(Collectors.joining(","));
root.put("温度", temp);
root.put("湿度", "");
ExperimentReport latestReport = experimentReportService.getLatestReport(experimentId);
root.put("批准人员姓名", Optional.ofNullable(latestReport).map(v -> sysUserService.getById(v.getConfirmer()))
.map(SysUser::getRealname).orElse(""));
root.put("编制人员姓名", Optional.ofNullable(sysUserService.getUserByName(experiment.getCreateBy())).map(SysUser::getRealname)
.orElse(""));
List<Map<String, Object>> sampleList = new ArrayList<>();
List<ExperimentSampleInfo> sampleInfoList = experiment.getSampleInfoList();
for (int i = 0; i < sampleInfoList.size(); i++) {
ExperimentSampleInfo sampleInfo = sampleInfoList.get(i);
Map<String, Object> sample = new HashMap<>();
sample.put("index", i + 1);
sample.put("样品名称", sampleInfo.getSampleName());
sample.put("样品型号", sampleInfo.getSampleModel());
sample.put("样品类型", sampleInfo.getSampleType());
sample.put("样品批次", sampleInfo.getSampleBatch());
sample.put("注量率", "");
sample.put("总剂量", "");
sampleList.add(sample);
}
root.put("sample", sampleList);
return root;
}
private static String formatDate(String date) {
if (StringUtils.isBlank(date)) {
return "";
}
return StringUtils.contains(date, " ") ? StringUtils.substringBefore(date, " ") : date;
}
private Map<String, Object> assembleSybg(String experimentId) { private Map<String, Object> assembleSybg(String experimentId) {
Experiment experiment = experimentService.getById(experimentId); Experiment experiment = experimentService.getById(experimentId);
@@ -288,12 +358,10 @@ public class ExperimentDocServiceImpl extends ServiceImpl<ExperimentDocMapper, E
if (CollUtil.isNotEmpty(deviationEquipmentList)) { if (CollUtil.isNotEmpty(deviationEquipmentList)) {
for (int i = 0; i < deviationEquipmentList.size(); i++) { for (int i = 0; i < deviationEquipmentList.size(); i++) {
ExperimentDeviationEquipment deviationEquipment = deviationEquipmentList.get(i); ExperimentDeviationEquipment deviationEquipment = deviationEquipmentList.get(i);
strings[i + 1] = new String[] {(i + 1) + "", strings[i + 1] = new String[] {(i + 1) + "", Optional.ofNullable(deviationEquipment.getEquipmentName()).orElse(""),
Optional.ofNullable(deviationEquipment.getEquipmentName()).orElse(""), Optional.ofNullable(deviationEquipment.getEquipmentNo()).orElse(""), Optional.ofNullable(
Optional.ofNullable(deviationEquipment.getEquipmentNo()).orElse(""), deviationEquipment.getMeasurementValidity()).orElse(""), Optional.ofNullable(deviationEquipment.getRoomNo()).orElse(
Optional.ofNullable(deviationEquipment.getMeasurementValidity()).orElse(""), ""),};
Optional.ofNullable(deviationEquipment.getRoomNo()).orElse(""),
};
} }
} }
params.put("装置表格", Tables.of(strings).border(BorderStyle.DEFAULT).create()); params.put("装置表格", Tables.of(strings).border(BorderStyle.DEFAULT).create());
@@ -301,15 +369,66 @@ public class ExperimentDocServiceImpl extends ServiceImpl<ExperimentDocMapper, E
} }
private Map<String, Object> assembleSbsyjlb(String experimentId) { private Map<String, Object> assembleSbsyjlb(String experimentId) {
return new HashMap<>(); List<ExperimentDeviationEquipment> equipmentList = experimentDeviationEquipmentService.getByExperimentId(experimentId);
List<Map<String, Object>> list = new ArrayList<>();
for (int i = 0; i < equipmentList.size(); i++) {
ExperimentDeviationEquipment v = equipmentList.get(i);
Map<String, Object> params = new HashMap<>();
params.put("index", i + 1);
params.put("设备名称", Optional.ofNullable(v.getEquipmentName()).orElse(""));
params.put("管理编号", Optional.ofNullable(v.getEquipmentNo()).orElse(""));
String measurementValidity = v.getMeasurementValidity();
params.put("使用日期", "");
params.put("归还日期", "");
params.put("计量有效期", Optional.ofNullable(measurementValidity).orElse(""));
params.put("异常记录", "");
list.add(params);
}
Experiment experiment = experimentService.getById(experimentId);
Map<String, Object> root = new HashMap<>();
root.put("equipment", list);
root.put("试验编号", experiment.getExperimentNo());
return root;
} }
private Map<String, Object> assembleSybgpsb(String experimentId) { private Map<String, Object> assembleSybgpsb(String experimentId) {
Experiment experiment = experimentService.getById(experimentId);
experimentService.fetchExperimentDetail(experiment);
if (Objects.isNull(experiment)) {
return new HashMap<>();
}
ExperimentReport latestReport = experimentReportService.getLatestReport(experimentId);
Map<String, Object> params = new HashMap<>();
params.put("批准人员姓名", Optional.ofNullable(latestReport).map(v -> sysUserService.getById(v.getConfirmer()))
.map(SysUser::getRealname).orElse(""));
params.put("审核人名称", Optional.ofNullable(latestReport).map(v -> sysUserService.getById(v.getAuditor()))
.map(SysUser::getRealname).orElse(""));
params.put("校对人名称", Optional.ofNullable(latestReport).map(v -> sysUserService.getById(v.getProofreader()))
.map(SysUser::getRealname).orElse(""));
params.put("负责人名称", experiment.getSupervisorName());
params.put("试验报告名称", experiment.getName());
params.put("试验编号", experiment.getExperimentNo());
params.put("驳回意见", "");
params.put("驳回意见2", Optional.ofNullable(latestReport).map(v -> v.getMemo()).orElse(""));
return new HashMap<>(); return new HashMap<>();
} }
private Map<String, Object> assembleFzsyjhb(String experimentId) { private Map<String, Object> assembleFzsyjhb(String experimentId) {
return new HashMap<>(); Experiment experiment = experimentService.getById(experimentId);
Map<String, Object> root = new HashMap<>();
root.put("试验编号", experiment.getExperimentNo());
root.put("能量", "");
root.put("束流", "");
root.put("X能量", "");
root.put("管电流", "");
root.put("管电压", "");
root.put("质子能量", "");
root.put("面积", "");
root.put("均衡性", "");
return root;
} }
@Override @Override

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
templates/试验报告.docx Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.