From 09c297c75f036f017dedfb163e338c6c427477d5 Mon Sep 17 00:00:00 2001 From: zhuo <2089219845@qq.com> Date: 星期一, 21 四月 2025 08:55:07 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev_ztzb' into dev_ztzb --- cnas-process/src/main/resources/mapper/ProcessReportMapper.xml | 3 cnas-process/src/main/resources/static/report-deal.docx | 0 cnas-process/src/main/java/com/ruoyi/process/service/ProcessReportService.java | 3 cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessReportServiceImpl.java | 377 +++++------------------------------------------------ cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessReport.java | 3 cnas-process/src/main/java/com/ruoyi/process/controller/ProcessReportController.java | 15 + 6 files changed, 54 insertions(+), 347 deletions(-) diff --git a/cnas-process/src/main/java/com/ruoyi/process/controller/ProcessReportController.java b/cnas-process/src/main/java/com/ruoyi/process/controller/ProcessReportController.java index 15dcb13..76a2db2 100644 --- a/cnas-process/src/main/java/com/ruoyi/process/controller/ProcessReportController.java +++ b/cnas-process/src/main/java/com/ruoyi/process/controller/ProcessReportController.java @@ -10,14 +10,18 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.util.Arrays; +import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * <p> * 妫�楠屾姤鍛婂彂鏀剧櫥璁拌〃 鍓嶇鎺у埗鍣� * </p> * - * @author + * @author * @since 2024-11-05 08:58:39 */ @RestController @@ -30,7 +34,7 @@ @ApiOperation(value = "鏌ヨ妫�楠屾姤鍛婂彂鏀剧櫥璁板垪琛�") @GetMapping("/pageProcessReport") - public Result pageProcessReport(ProcessReport processReport , Page page) throws Exception { + public Result pageProcessReport(ProcessReport processReport , Page page) { return Result.success(processReportService.pageProcessReport(page, processReport)); } @@ -60,8 +64,11 @@ @ApiOperation(value = "瀵煎嚭妫�楠屾姤鍛婂彂鏀剧櫥璁拌〃") @GetMapping("/exportProcessReport") - public Result exportProcessReport() { - return Result.success(processReportService.exportProcessReport()); + public void exportProcessReport(String ids, HttpServletResponse response) { + List<Integer> list = Arrays.stream(ids.split(",")) + .map(Integer::parseInt) + .collect(Collectors.toList()); + processReportService.exportProcessReport(list, response); } } diff --git a/cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessReport.java b/cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessReport.java index d25d222..4be9719 100644 --- a/cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessReport.java +++ b/cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessReport.java @@ -26,6 +26,9 @@ @ApiModel(value = "ProcessReport瀵硅薄", description = "妫�楠屾姤鍛婂彂鏀剧櫥璁拌〃") public class ProcessReport implements Serializable { + @TableField(select = false,exist = false) + //瀵煎嚭搴忓彿 + private Integer indexs; @TableId(value = "id", type = IdType.AUTO) private Integer id; diff --git a/cnas-process/src/main/java/com/ruoyi/process/service/ProcessReportService.java b/cnas-process/src/main/java/com/ruoyi/process/service/ProcessReportService.java index c3f7fbe..5ae2987 100644 --- a/cnas-process/src/main/java/com/ruoyi/process/service/ProcessReportService.java +++ b/cnas-process/src/main/java/com/ruoyi/process/service/ProcessReportService.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.process.pojo.ProcessReport; +import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; @@ -20,5 +21,5 @@ IPage<ProcessReport> pageProcessReport(Page page, ProcessReport processReport); - String exportProcessReport(); + void exportProcessReport(List<Integer> ids, HttpServletResponse response); } 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 0bf47b4..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; @@ -74,350 +78,41 @@ } @Override - public String exportProcessReport() { - List<ProcessReport> processReports = processReportMapper.selectList(null); - 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( + public void exportProcessReport(List<Integer> ids, HttpServletResponse response) { + List<ProcessReport> processReports = processReportMapper.getIds(ids); +// 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; } } diff --git a/cnas-process/src/main/resources/mapper/ProcessReportMapper.xml b/cnas-process/src/main/resources/mapper/ProcessReportMapper.xml index 6c06783..8770f50 100644 --- a/cnas-process/src/main/resources/mapper/ProcessReportMapper.xml +++ b/cnas-process/src/main/resources/mapper/ProcessReportMapper.xml @@ -28,7 +28,8 @@ </if> </select> <select id="getIds" resultType="com.ruoyi.process.pojo.ProcessReport"> - select cpr.* , + select ROW_NUMBER() OVER (ORDER BY cpr.id) AS indexs, + cpr.* , u1.name sendUserName from cnas_process_report cpr left join user u1 on send_user=u1.id diff --git a/cnas-process/src/main/resources/static/report-deal.docx b/cnas-process/src/main/resources/static/report-deal.docx index fdd74f4..b3c8eb7 100644 --- a/cnas-process/src/main/resources/static/report-deal.docx +++ b/cnas-process/src/main/resources/static/report-deal.docx Binary files differ -- Gitblit v1.9.3