From f77f5436004b977a10c82e882d1e073e21251d4c Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期四, 14 八月 2025 13:42:11 +0800
Subject: [PATCH] 检测报告页脚修改
---
cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessReportServiceImpl.java | 398 ++++++--------------------------------------------------
1 files changed, 42 insertions(+), 356 deletions(-)
diff --git a/cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessReportServiceImpl.java b/cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessReportServiceImpl.java
index 7a45959..5bca8b2 100644
--- a/cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessReportServiceImpl.java
+++ b/cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessReportServiceImpl.java
@@ -3,6 +3,7 @@
import cn.hutool.core.lang.UUID;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.deepoove.poi.XWPFTemplate;
@@ -13,7 +14,10 @@
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.SignatureImageUtil;
import com.ruoyi.framework.exception.ErrorException;
+import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
+import com.ruoyi.process.dto.ProcessReportDto;
import com.ruoyi.process.mapper.ProcessReportMapper;
import com.ruoyi.process.pojo.ProcessReport;
import com.ruoyi.process.service.ProcessReportService;
@@ -25,7 +29,9 @@
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
import java.io.*;
+import java.net.URLEncoder;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
@@ -39,7 +45,7 @@
* 妫�楠屾姤鍛婂彂鏀剧櫥璁拌〃 鏈嶅姟瀹炵幇绫�
* </p>
*
- * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @author
* @since 2024-11-05 08:58:39
*/
@Service
@@ -48,376 +54,56 @@
@Resource
private ProcessReportMapper processReportMapper;
-
-
- @Value("${wordUrl}")
- private String wordUrl;
+ @Value("${file.path}")
+ private String imgUrl;
@Resource
private UserMapper userMapper;
@Override
- public IPage<ProcessReport> pageProcessReport(Page page, ProcessReport processReport) {
- //todo 浠呯湅鎴�
- IPage<ProcessReport> processReportIPage = processReportMapper.pageProcessReport(page, QueryWrappers.queryWrappers(processReport));
-// for (ProcessReport record : processReportIPage.getRecords()) {
-// List<String> name = new ArrayList<>();
-// for (String s : record.getSignatory().split(",")) {
-// User user = userMapper.selectById(Integer.parseInt(s));
-// name.add(user.getName());
-// }
-// String signatoryName = name.stream().collect(Collectors.joining(","));
-// record.setSignatoryName(signatoryName);
-// }
+ public IPage<ProcessReportDto> pageProcessReport(Page page, ProcessReportDto processReport) {
+ IPage<ProcessReportDto> processReportIPage = processReportMapper.pageProcessReport(page, QueryWrappers.queryWrappers(processReport));
return processReportIPage;
}
@Override
- public String exportProcessReport(List<Integer> ids) {
- List<ProcessReport> processReports = processReportMapper.getIds(ids);
- for (ProcessReport processReport : processReports) {
- List<String> name = new ArrayList<>();
- for (String s : processReport.getSignatory().split(",")) {
- User user = userMapper.selectById(Integer.parseInt(s));
- name.add(user.getName());
- }
- String signatoryName = name.stream().collect(Collectors.joining(","));
- processReport.setSignatoryName(signatoryName);
- }
- //鐢熸垚妫�楠屾姤鍛婂彂鏀剧櫥璁拌〃
- String url;
- try {
- InputStream inputStream = this.getClass().getResourceAsStream("/static/report-deal.docx");
- File file = File.createTempFile("temp", ".tmp");
- OutputStream outputStream = new FileOutputStream(file);
- IOUtils.copy(inputStream, outputStream);
- url = file.getAbsolutePath();
- } catch (FileNotFoundException e) {
- throw new ErrorException("鎵句笉鍒版ā鏉挎枃浠�");
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- ConfigureBuilder builder = Configure.builder();
- builder.useSpringEL(true);
+ public void exportProcessReport(ProcessReportDto dto, HttpServletResponse response) {
+ List<ProcessReportDto> processReports = processReportMapper.exportProcessReport();
+ for (ProcessReportDto processReport : processReports) {
+ // 鍙戦�佷汉鐢熸垚绛惧悕鍥剧墖
+ processReport.setSendUserRender(StringUtils.isNotBlank(processReport.getSendUserUrl())
+ ? Pictures.ofLocal(imgUrl + "/" + processReport.getSendUserUrl()).create() : null);
- List<Map<String, Object>> reportList = new ArrayList<>();
- Integer index = 1;
- Integer index1 = 1;
- for (int c = 0; c < processReports.size(); c++) {
- //瓒呰繃15琛屾崲椤�
- if (c % 15 == 0) {
- List<RowRenderData> rows = new ArrayList<>();
- //琛ㄦ牸鐨勮鏁�
- for (int i = 0; i < 16; i++) {
- RowRenderData rowRenderData = new RowRenderData();
- RowStyle rowStyle = new RowStyle();
- rowStyle.setHeight(40);
- rowRenderData.setRowStyle(rowStyle);
- List<CellRenderData> cells = new ArrayList<>();
- //琛ㄦ牸鐨勫垪鏁�
- for (int j = 0; j < 10; j++) {
- CellRenderData cellRenderData = new CellRenderData();
- CellStyle cellStyle = new CellStyle();
- cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER);
- cellRenderData.setCellStyle(cellStyle);
- List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>();
- ParagraphRenderData paragraphRenderData = new ParagraphRenderData();
- ParagraphStyle paragraphStyle = new ParagraphStyle();
- paragraphStyle.setAlign(ParagraphAlignment.CENTER);
- paragraphRenderData.setParagraphStyle(paragraphStyle);
- List<RenderData> renderData = new ArrayList<>();
- TextRenderData textRenderData = new TextRenderData();
- Style style = new Style();
- style.setFontFamily("瀹嬩綋");
- style.setColor("000000");
- textRenderData.setStyle(style);
- if (i == 0) {
- //绗竴琛�
- if (j == 0) {
- //绗竴鍒楀簭鍙�
- textRenderData.setText("搴忓彿@No.");
- renderData.add(textRenderData);
- paragraphRenderData.setContents(renderData);
- paragraphRenderDataList.add(paragraphRenderData);
- cellRenderData.setParagraphs(paragraphRenderDataList);
- cells.add(cellRenderData);
- } else if (j == 1) {
- //绗簩鍒�
- textRenderData.setText("妫�楠屾姤鍛婄紪鍙稝Inspection report number");
- renderData.add(textRenderData);
- paragraphRenderData.setContents(renderData);
- paragraphRenderDataList.add(paragraphRenderData);
- cellRenderData.setParagraphs(paragraphRenderDataList);
- cells.add(cellRenderData);
- } else if (j == 2) {
- //绗笁鍒�
- textRenderData.setText("椤垫暟@Pages");
- renderData.add(textRenderData);
- paragraphRenderData.setContents(renderData);
- paragraphRenderDataList.add(paragraphRenderData);
- cellRenderData.setParagraphs(paragraphRenderDataList);
- cells.add(cellRenderData);
- } else if (j == 3) {
- //绗洓鍒�
- textRenderData.setText("鍙戦�佷唤鏁癅Number of copies sent");
- renderData.add(textRenderData);
- paragraphRenderData.setContents(renderData);
- paragraphRenderDataList.add(paragraphRenderData);
- cellRenderData.setParagraphs(paragraphRenderDataList);
- cells.add(cellRenderData);
- } else if (j == 4) {
- //绗簲鍒�
- textRenderData.setText("鍙戝線浣曞@Where to send to");
- renderData.add(textRenderData);
- paragraphRenderData.setContents(renderData);
- paragraphRenderDataList.add(paragraphRenderData);
- cellRenderData.setParagraphs(paragraphRenderDataList);
- cells.add(cellRenderData);
- } else if (j == 5) {
- //绗叚鍒�
- textRenderData.setText("鍙戦�佹柟寮廆Send method");
- renderData.add(textRenderData);
- paragraphRenderData.setContents(renderData);
- paragraphRenderDataList.add(paragraphRenderData);
- cellRenderData.setParagraphs(paragraphRenderDataList);
- cells.add(cellRenderData);
- } else if (j == 6) {
- //绗竷鍒�
- textRenderData.setText("鍙戦�佹棩鏈烜Date sent");
- renderData.add(textRenderData);
- paragraphRenderData.setContents(renderData);
- paragraphRenderDataList.add(paragraphRenderData);
- cellRenderData.setParagraphs(paragraphRenderDataList);
- cells.add(cellRenderData);
- }else if (j == 7) {
- //绗叓鍒�
- textRenderData.setText("鍙戦�佷汉@Sender");
- renderData.add(textRenderData);
- paragraphRenderData.setContents(renderData);
- paragraphRenderDataList.add(paragraphRenderData);
- cellRenderData.setParagraphs(paragraphRenderDataList);
- cells.add(cellRenderData);
- }else if (j == 8) {
- //绗節鍒�
- textRenderData.setText("绛炬敹浜篅Signatory");
- renderData.add(textRenderData);
- paragraphRenderData.setContents(renderData);
- paragraphRenderDataList.add(paragraphRenderData);
- cellRenderData.setParagraphs(paragraphRenderDataList);
- cells.add(cellRenderData);
- }else{
- //绗崄鍒�
- textRenderData.setText("澶囨敞@Remark");
- renderData.add(textRenderData);
- paragraphRenderData.setContents(renderData);
- paragraphRenderDataList.add(paragraphRenderData);
- cellRenderData.setParagraphs(paragraphRenderDataList);
- cells.add(cellRenderData);
- }
- }
- else {
- //鍏朵粬琛�
- if (j == 0) {
- //绗竴鍒�
- try{
- String insReportCode = processReports.get((i-1) + (index1 - 1) * 20).getInsReportCode();
- textRenderData.setText(index + "");
- } catch (Exception e) {
- textRenderData.setText("");
- }
- index++;
- renderData.add(textRenderData);
- paragraphRenderData.setContents(renderData);
- paragraphRenderDataList.add(paragraphRenderData);
- cellRenderData.setParagraphs(paragraphRenderDataList);
- cells.add(cellRenderData);
- } else if (j == 1) {
- try{
- textRenderData.setText(processReports.get((i-1) + (index1 - 1) * 20).getInsReportCode());
- } catch (Exception e) {
- textRenderData.setText("");
- }
- renderData.add(textRenderData);
- paragraphRenderData.setContents(renderData);
- paragraphRenderDataList.add(paragraphRenderData);
- cellRenderData.setParagraphs(paragraphRenderDataList);
- cells.add(cellRenderData);
- }
- else if (j == 2) {
- try{
- textRenderData.setText(processReports.get((i-1) + (index1 - 1) * 20).getPages());
- } catch (Exception e) {
- textRenderData.setText("");
- }
- renderData.add(textRenderData);
- paragraphRenderData.setContents(renderData);
- paragraphRenderDataList.add(paragraphRenderData);
- cellRenderData.setParagraphs(paragraphRenderDataList);
- cells.add(cellRenderData);
- }
- else if (j == 3) {
- try{
- textRenderData.setText(processReports.get((i-1) + (index1 - 1) * 20).getNumber());
- } catch (Exception e) {
- textRenderData.setText("");
- }
- renderData.add(textRenderData);
- paragraphRenderData.setContents(renderData);
- paragraphRenderDataList.add(paragraphRenderData);
- cellRenderData.setParagraphs(paragraphRenderDataList);
- cells.add(cellRenderData);
- }
- else if (j == 4) {
- try{
- textRenderData.setText(processReports.get((i-1) + (index1 - 1) * 20).getSend());
- } catch (Exception e) {
- textRenderData.setText("");
- }
- renderData.add(textRenderData);
- paragraphRenderData.setContents(renderData);
- paragraphRenderDataList.add(paragraphRenderData);
- cellRenderData.setParagraphs(paragraphRenderDataList);
- cells.add(cellRenderData);
- }
- else if (j == 5) {
- try{
- textRenderData.setText(processReports.get((i-1) + (index1 - 1) * 20).getMethod());
- } catch (Exception e) {
- textRenderData.setText("");
- }
- renderData.add(textRenderData);
- paragraphRenderData.setContents(renderData);
- paragraphRenderDataList.add(paragraphRenderData);
- cellRenderData.setParagraphs(paragraphRenderDataList);
- cells.add(cellRenderData);
- }
- else if (j == 6) {
- try{
- textRenderData.setText(processReports.get((i-1) + (index1 - 1) * 20).getSendTime()+"");
- } catch (Exception e) {
- textRenderData.setText("");
- }
- renderData.add(textRenderData);
- paragraphRenderData.setContents(renderData);
- paragraphRenderDataList.add(paragraphRenderData);
- cellRenderData.setParagraphs(paragraphRenderDataList);
- cells.add(cellRenderData);
- }
- else if (j == 7) {
- try{
- textRenderData.setText(processReports.get((i-1) + (index1 - 1) * 20).getSendUserName());
- } catch (Exception e) {
- textRenderData.setText("");
- }
- renderData.add(textRenderData);
- paragraphRenderData.setContents(renderData);
- paragraphRenderDataList.add(paragraphRenderData);
- cellRenderData.setParagraphs(paragraphRenderDataList);
- cells.add(cellRenderData);
- }
- else if (j == 8) {
- try{
- textRenderData.setText(processReports.get((i-1) + (index1 - 1) * 20).getSignatoryName());
- } catch (Exception e) {
- textRenderData.setText("");
- }
- renderData.add(textRenderData);
- paragraphRenderData.setContents(renderData);
- paragraphRenderDataList.add(paragraphRenderData);
- cellRenderData.setParagraphs(paragraphRenderDataList);
- cells.add(cellRenderData);
- }
- else {
- try{
- textRenderData.setText(processReports.get((i-1) + (index1 - 1) * 20).getRemark());
- } catch (Exception e) {
- textRenderData.setText("");
- }
- renderData.add(textRenderData);
- paragraphRenderData.setContents(renderData);
- paragraphRenderDataList.add(paragraphRenderData);
- cellRenderData.setParagraphs(paragraphRenderDataList);
- cells.add(cellRenderData);
- }
- }
- }
- rowRenderData.setCells(cells);
- if (rowRenderData.getCells().size() != 0) {
- rows.add(rowRenderData);
- }
- }
- TableRenderData tableRenderData = new TableRenderData();
- tableRenderData.setRows(rows);
- int countSize = tableRenderData.getRows().get(0).getCells().size();
- for (RowRenderData row : tableRenderData.getRows()) {
- if (row.getCells().size() != countSize) {
- throw new ErrorException("姣忚鍗曞厓鏍间笉鐩哥瓑");
- }
- }
- TableStyle tableStyle = new TableStyle();
- tableStyle.setWidth(XWPFTable.DEFAULT_PERCENTAGE_WIDTH);
- tableStyle.setAlign(TableRowAlign.CENTER);
- BorderStyle borderStyle = new BorderStyle();
- borderStyle.setColor("000000");
- borderStyle.setType(XWPFTable.XWPFBorderType.THICK);
- borderStyle.setSize(14);
- tableStyle.setLeftBorder(borderStyle);
- tableStyle.setTopBorder(borderStyle);
- tableStyle.setRightBorder(borderStyle);
- tableStyle.setBottomBorder(borderStyle);
- tableRenderData.setTableStyle(tableStyle);
- Map<String, Object> table = new HashMap<>();
- table.put("report", tableRenderData);
- table.put("index1", index1);
- reportList.add(table);
- index1++;
- }
+ // 绛炬敹浜虹敓鎴愬浘鐗�
+ processReport.setSignatoryRender(StringUtils.isNotBlank(processReport.getSignatory())
+ ? Pictures.ofStream(SignatureImageUtil.saveImageToFile(processReport.getSignatory())).create() : null);
}
- Integer finalIndex = index1;
- XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render(
+
+ // 鑾峰彇璺緞
+ InputStream inputStream = this.getClass().getResourceAsStream("/static/report-deal.docx");
+ Configure configure = Configure.builder()
+ .bind("reportList", new HackLoopTableRenderPolicy())
+ .build();
+ XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
new HashMap<String, Object>() {{
- put("reportList", reportList);
+ put("reportList", processReports);
}});
- String name = UUID.randomUUID() + "_妫�楠屾姤鍛婂彂鏀剧櫥璁拌〃" + ".docx";
try {
- template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name)));
- } catch (IOException e) {
- throw new RuntimeException(e);
+ response.setContentType("application/msword");
+ String fileName = URLEncoder.encode(
+ "妫�楠屾姤鍛婂彂鏀剧櫥璁拌〃", "UTF-8");
+ response.setHeader("Content-disposition",
+ "attachment;filename=" + fileName + ".docx");
+ OutputStream os = response.getOutputStream();
+ template.write(os);
+ os.flush();
+ os.close();
+ inputStream.close();
+ inputStream.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException("瀵煎嚭澶辫触");
}
- //澶勭悊涓嫳鏂囨崲琛岀殑闂
- String path = wordUrl + "/" + name;
- try {
- FileInputStream stream1 = new FileInputStream(path);
- XWPFDocument document1 = new XWPFDocument(stream1);
- List<XWPFTable> xwpfTables1 = document1.getTables();
- for (int i = 0; i < xwpfTables1.size(); i++) {
- for (int j = 0; j < xwpfTables1.get(i).getRows().size(); j++) {
- for (int k = 0; k < xwpfTables1.get(i).getRows().get(j).getTableCells().size(); k++) {
- if (xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText().contains("@")) {
- String text = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText();
- String[] split = text.split("@");
- xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0);
- XWPFParagraph xwpfParagraph = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).addParagraph();
- XWPFRun run = xwpfParagraph.createRun();
- run.setText(split[0]);
- if (ObjectUtils.isNotNull(split[1])) {
- run.addBreak();
- run.setText(split[1]);
- }
- xwpfParagraph.setAlignment(ParagraphAlignment.CENTER);
- }
- }
- }
- }
- FileOutputStream fileOutputStream1 = new FileOutputStream(path);
- document1.write(fileOutputStream1);
- fileOutputStream1.close();
- } catch (FileNotFoundException e) {
- throw new RuntimeException(e);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- return name;
}
}
--
Gitblit v1.9.3