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.extension.service.impl.ServiceImpl;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.data.Tables;
import com.deepoove.poi.data.style.BorderStyle;
import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xwpf.usermodel.*;
@@ -44,15 +46,17 @@ import java.util.stream.Collectors;
public class ExperimentDocServiceImpl extends ServiceImpl<ExperimentDocMapper, ExperimentDoc> implements IExperimentDocService {
@Value("${jeecg.template.path}")
private String templatePath;
private String templatePath;
@Value("${server.ip}")
private String serverIp;
private String serverIp;
@Autowired
private IExperimentService experimentService;
private IExperimentService experimentService;
@Autowired
private IExperimentReportService experimentReportService;
private IExperimentReportService experimentReportService;
@Autowired
private ISysUserService sysUserService;
private IExperimentDeviationEquipmentService experimentDeviationEquipmentService;
@Autowired
private ISysUserService sysUserService;
@Autowired
private IClientService clientService;
@@ -102,8 +106,9 @@ public class ExperimentDocServiceImpl extends ServiceImpl<ExperimentDocMapper, E
FileUtil.del(outputFile);
}
log.info("output file path: " + outputFile);
Map<String, Object> params = assembleParams(experimentId, fileName);
XWPFTemplate render = XWPFTemplate.compile(absolutePath).render(params);
assembleParams(experimentId, fileName, outputFile);
//XWPFTemplate render = XWPFTemplate.compile(absolutePath).render(params);
//render.writeToFile(outputFile);
/* NiceXWPFDocument document = render.getXWPFDocument();
//render
//.writeToFile(outputFile);
@@ -121,7 +126,6 @@ public class ExperimentDocServiceImpl extends ServiceImpl<ExperimentDocMapper, E
document.write(out);
}
document.close();*/
render.writeToFile(outputFile);
String path = MinioUtil.upload(FileUtil.getInputStream(outputFile),
"experiment_doc/" + experimentId + "/" + version + "/" + experiment.getName() + "-" + fileName + ".docx");
return path;
@@ -181,24 +185,90 @@ 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) {
case "辐照试验计划表":
return assembleFzsyjhb(experimentId);
Map<String, Object> jhparams = assembleFzsyjhb(experimentId);
XWPFTemplate jhrender = XWPFTemplate.compile(absolutePath).render(jhparams);
jhrender.writeToFile(outputFile);
break;
case "试验报告评审表":
return assembleSybgpsb(experimentId);
Map<String, Object> psparams = assembleSybgpsb(experimentId);
XWPFTemplate psrender = XWPFTemplate.compile(absolutePath).render(psparams);
psrender.writeToFile(outputFile);
break;
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 "试验报告":
return assembleSybg(experimentId);
Map<String, Object> params = assembleSybg(experimentId);
XWPFTemplate render = XWPFTemplate.compile(absolutePath).render(params);
render.writeToFile(outputFile);
break;
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<>();
}
private Map<String, Object> assembleFzsyzjd(String experimentId) {
return new HashMap<>();
Experiment experiment = experimentService.getById(experimentId);
experimentService.fetchExperimentDetail(experiment);
if (Objects.isNull(experiment)) {
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) {
@@ -288,12 +358,10 @@ public class ExperimentDocServiceImpl extends ServiceImpl<ExperimentDocMapper, E
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(""),
};
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());
@@ -301,15 +369,66 @@ public class ExperimentDocServiceImpl extends ServiceImpl<ExperimentDocMapper, E
}
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) {
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<>();
}
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