From 234b0ac195934b34c06045b2d2ef0f10e239dd8e Mon Sep 17 00:00:00 2001 From: zhuo <2089219845@qq.com> Date: 星期三, 23 四月 2025 00:06:54 +0800 Subject: [PATCH] 系统合并 --- cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessReportServiceImpl.java | 377 +++++------------------------------------------------ 1 files changed, 36 insertions(+), 341 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..a92b478 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 @@ -14,18 +14,22 @@ import com.ruoyi.common.utils.QueryWrappers; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.framework.exception.ErrorException; +import com.ruoyi.inspect.util.HackLoopTableRenderPolicy; import com.ruoyi.process.mapper.ProcessReportMapper; import com.ruoyi.process.pojo.ProcessReport; import com.ruoyi.process.service.ProcessReportService; import com.ruoyi.system.mapper.UserMapper; import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.poi.xwpf.usermodel.*; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; 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 +43,7 @@ * 妫�楠屾姤鍛婂彂鏀剧櫥璁拌〃 鏈嶅姟瀹炵幇绫� * </p> * - * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃 + * @author * @since 2024-11-05 08:58:39 */ @Service @@ -74,350 +78,41 @@ } @Override - public String exportProcessReport(List<Integer> ids) { + public void exportProcessReport(List<Integer> ids, HttpServletResponse response) { 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); - - 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++; - } - } - Integer finalIndex = index1; - XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render( +// for (ProcessReport record : processReports) { +// List<String> name = new ArrayList<>(); +// if(StringUtils.isNotBlank(record.getSignatory())){ +// 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); +// } +// } + // 鑾峰彇璺緞 + 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(); + } 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