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 63c9d65..4aabefa 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 @@ -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 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 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 assembleParams(String experimentId, String type) { + private Map assembleParams(String experimentId, String type, String outputFile) throws IOException { + String absolutePath = templatePath + File.separator + docTempalteMap.get(type); switch (type) { case "辐照试验计划表": - return assembleFzsyjhb(experimentId); + Map jhparams = assembleFzsyjhb(experimentId); + XWPFTemplate jhrender = XWPFTemplate.compile(absolutePath).render(jhparams); + jhrender.writeToFile(outputFile); + break; case "试验报告评审表": - return assembleSybgpsb(experimentId); + Map psparams = assembleSybgpsb(experimentId); + XWPFTemplate psrender = XWPFTemplate.compile(absolutePath).render(psparams); + psrender.writeToFile(outputFile); + break; case "设备使用记录表": - return assembleSbsyjlb(experimentId); + Map 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 params = assembleSybg(experimentId); + XWPFTemplate render = XWPFTemplate.compile(absolutePath).render(params); + render.writeToFile(outputFile); + break; case "辐照试验总结单": - return assembleFzsyzjd(experimentId); + Map 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 assembleFzsyzjd(String experimentId) { - return new HashMap<>(); + Experiment experiment = experimentService.getById(experimentId); + experimentService.fetchExperimentDetail(experiment); + if (Objects.isNull(experiment)) { + return new HashMap<>(); + } + Map root = new HashMap<>(); + root.put("试验编号", experiment.getExperimentNo()); + Client client = clientService.getOne(new LambdaQueryWrapper().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 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> sampleList = new ArrayList<>(); + List sampleInfoList = experiment.getSampleInfoList(); + for (int i = 0; i < sampleInfoList.size(); i++) { + ExperimentSampleInfo sampleInfo = sampleInfoList.get(i); + Map 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 assembleSybg(String experimentId) { @@ -288,12 +358,10 @@ public class ExperimentDocServiceImpl extends ServiceImpl assembleSbsyjlb(String experimentId) { - return new HashMap<>(); + List equipmentList = experimentDeviationEquipmentService.getByExperimentId(experimentId); + List> list = new ArrayList<>(); + for (int i = 0; i < equipmentList.size(); i++) { + ExperimentDeviationEquipment v = equipmentList.get(i); + Map 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 root = new HashMap<>(); + root.put("equipment", list); + root.put("试验编号", experiment.getExperimentNo()); + return root; } private Map assembleSybgpsb(String experimentId) { + Experiment experiment = experimentService.getById(experimentId); + experimentService.fetchExperimentDetail(experiment); + if (Objects.isNull(experiment)) { + return new HashMap<>(); + } + ExperimentReport latestReport = experimentReportService.getLatestReport(experimentId); + Map 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 assembleFzsyjhb(String experimentId) { - return new HashMap<>(); + Experiment experiment = experimentService.getById(experimentId); + Map 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 diff --git a/templates/fzsyjhb.docx b/templates/fzsyjhb.docx index 025877b..4b12839 100644 Binary files a/templates/fzsyjhb.docx and b/templates/fzsyjhb.docx differ diff --git a/templates/fzsyzjd.docx b/templates/fzsyzjd.docx index b55db63..669cfa6 100644 Binary files a/templates/fzsyzjd.docx and b/templates/fzsyzjd.docx differ diff --git a/templates/sbsyjlb.docx b/templates/sbsyjlb.docx index b55db63..21f9f2f 100644 Binary files a/templates/sbsyjlb.docx and b/templates/sbsyjlb.docx differ diff --git a/templates/sybgpsb.docx b/templates/sybgpsb.docx index b55db63..86a7e48 100644 Binary files a/templates/sybgpsb.docx and b/templates/sybgpsb.docx differ diff --git a/templates/设备使用记录表.docx b/templates/设备使用记录表.docx new file mode 100644 index 0000000..0d280f5 Binary files /dev/null and b/templates/设备使用记录表.docx differ diff --git a/templates/试验报告.docx b/templates/试验报告.docx new file mode 100644 index 0000000..281df3f Binary files /dev/null and b/templates/试验报告.docx differ diff --git a/templates/试验报告评审表.docx b/templates/试验报告评审表.docx new file mode 100644 index 0000000..a6d92ce Binary files /dev/null and b/templates/试验报告评审表.docx differ diff --git a/templates/辐照试验总结单.docx b/templates/辐照试验总结单.docx new file mode 100644 index 0000000..856bbce Binary files /dev/null and b/templates/辐照试验总结单.docx differ diff --git a/templates/辐照试验计划表.docx b/templates/辐照试验计划表.docx new file mode 100644 index 0000000..a538aea Binary files /dev/null and b/templates/辐照试验计划表.docx differ