From 4f3a98f19143865cdc1de4791e8a95d96bd40c65 Mon Sep 17 00:00:00 2001 From: maven <2163098428@qq.com> Date: 星期五, 01 八月 2025 13:27:59 +0800 Subject: [PATCH] yys 密码已重置 --- cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordTotalServiceImpl.java | 430 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 430 insertions(+), 0 deletions(-) diff --git a/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordTotalServiceImpl.java b/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordTotalServiceImpl.java new file mode 100644 index 0000000..0b54543 --- /dev/null +++ b/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordTotalServiceImpl.java @@ -0,0 +1,430 @@ +package com.ruoyi.manage.service.impl; + +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.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepoove.poi.XWPFTemplate; +import com.deepoove.poi.config.Configure; +import com.deepoove.poi.config.ConfigureBuilder; + + +import com.deepoove.poi.data.*; +import com.deepoove.poi.data.style.*; +import com.ruoyi.common.core.domain.entity.User; +import com.ruoyi.common.utils.QueryWrappers; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.framework.exception.ErrorException; +import com.ruoyi.manage.mapper.ManageRecordTotalMapper; +import com.ruoyi.manage.mapper.ManageRecordVerifyMapper; + +import com.ruoyi.manage.pojo.ManageRecordTotal; +import com.ruoyi.manage.pojo.ManageRecordVerify; + +import com.ruoyi.manage.service.ManageRecordTotalService; + +import com.ruoyi.system.mapper.UserMapper; +import org.apache.commons.io.IOUtils; +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 java.io.*; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * <p> + * 澶栨潵鏂囦欢纭璁板綍鎬诲巻鍙茶褰曡〃 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author + * @since 2024-11-12 10:30:08 + */ +@Service +@Transactional(rollbackFor = Exception.class) +public class ManageRecordTotalServiceImpl extends ServiceImpl<ManageRecordTotalMapper, ManageRecordTotal> implements ManageRecordTotalService { + + @Resource + private ManageRecordTotalMapper manageRecordTotalMapper; + + @Value("${wordUrl}") + private String wordUrl; + + + + @Resource + private UserMapper userMapper; + + @Value("${file.path}") + private String imgUrl; + + @Resource + private ManageRecordVerifyMapper manageRecordVerifyMapper; + + @Override + public IPage<ManageRecordTotal> pageManageRecordTotal(Page page, ManageRecordTotal manageRecordTotal) { + return manageRecordTotalMapper.pageProcessTotaldeal(page, QueryWrappers.queryWrappers(manageRecordTotal)); + } + + @Override + public int submitManageRecordTotal(Integer id) { + Integer userId = SecurityUtils.getUserId().intValue(); + User user = userMapper.selectById(userId); + if (ObjectUtils.isEmpty(user.getSignatureUrl())) throw new ErrorException("鏈壘鍒板~琛ㄤ汉鐨勭數瀛愮鍚�,璇蜂笂浼犺嚜宸辩殑鐢靛瓙绛惧悕!"); + ManageRecordTotal manageRecordTotal = manageRecordTotalMapper.selectById(id); + manageRecordTotal.setSubmitUser(userId); + manageRecordTotal.setSubmitDate(LocalDate.now()); + manageRecordTotal.setSubmitUrl(user.getSignatureUrl()); + //鐢熸垚鏍峰搧澶勭悊鐢宠琛ㄥ苟灏嗗~琛ㄤ汉鐨勭數瀛愮鍚嶅嵃涓� + manageRecordTotal.setUrl(recordTotaldeal(id,user.getSignatureUrl())); + return manageRecordTotalMapper.updateById(manageRecordTotal); + } + + @Override + public int ratifyManageRecordTotal(Integer id, String ratifyState) { + Integer userId = SecurityUtils.getUserId().intValue(); + User user = userMapper.selectById(userId); + if (ObjectUtils.isEmpty(user.getSignatureUrl())) throw new ErrorException("鏈壘鍒版壒鍑嗕汉鐨勭數瀛愮鍚�,璇蜂笂浼犺嚜宸辩殑鐢靛瓙绛惧悕!"); + ManageRecordTotal manageRecordTotal = manageRecordTotalMapper.selectById(id); + manageRecordTotal.setRatifyUser(userId); + manageRecordTotal.setRatifyState(ratifyState); + manageRecordTotal.setRatifyDate(LocalDate.now()); + manageRecordTotal.setRatifyUrl(user.getSignatureUrl()); + //灏嗘壒鍑嗕汉鐨勭鍚嶅嵃涓� + String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; + wordInsertUrl(new HashMap<String, Object>() {{ + put("ratifyDateEn", monthNames[LocalDate.now().getMonthValue() - 1] + " " + LocalDate.now().getDayOfMonth() + ", " + LocalDate.now().getYear()); + put("ratifyDate", LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�"))); + put("ratifyUrl", new FilePictureRenderData(100,50,imgUrl + "/" + user.getSignatureUrl())); + }}, wordUrl+"/"+manageRecordTotal.getUrl()); + return manageRecordTotalMapper.updateById(manageRecordTotal); + } + + public int wordInsertUrl(Map<String, Object> map, String url) { + XWPFTemplate template = XWPFTemplate.compile(url).render(map); + try { + template.writeAndClose(Files.newOutputStream(Paths.get(url))); + } catch (IOException e) { + throw new RuntimeException(e); + } + return 1; + } + + + private String recordTotaldeal(Integer id,String signatureUrl){ + List<ManageRecordVerify> manageRecordVerifies = manageRecordVerifyMapper.selectList(Wrappers.<ManageRecordVerify>lambdaQuery().eq(ManageRecordVerify::getManageRecordTotalId,id)); + String url; + try { + InputStream inputStream = this.getClass().getResourceAsStream("/static/verify-deal.docx"); + File file = File.createTempFile("temp", ".tmp"); + OutputStream outputStream = new FileOutputStream(file); + IOUtils.copy(inputStream, outputStream); + url = file.getAbsolutePath(); + inputStream.close(); + outputStream.close(); + } catch (FileNotFoundException e) { + throw new ErrorException("鎵句笉鍒版ā鏉挎枃浠�"); + } catch (IOException e) { + throw new RuntimeException(e); + } + ConfigureBuilder builder = Configure.builder(); + builder.useSpringEL(true); + String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; + List<Map<String, Object>> verifyList = new ArrayList<>(); + Integer index = 1; + Integer index1 = 1; + for (int c = 0; c < manageRecordVerifies.size(); c++) { + //瓒呰繃21琛屾崲椤� + if (c % 20 == 0) { + List<RowRenderData> rows = new ArrayList<>(); + //琛ㄦ牸鐨勮鏁� + for (int i = 0; i < 21; 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 < 8; 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("澶栨潵鏂囦欢鍚嶇О@Foreign file name"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } else if (j == 2) { + //绗笁鍒楁牱鍝佺紪鍙� + textRenderData.setText("鏂囦欢缂栧彿@File number"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } else if (j == 3) { + //绗洓鍒椾緵鏍峰崟浣� + textRenderData.setText("鏍囧噯瑙勮寖鍚嶇О@Standard specification name"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } else if (j == 4) { + //绗簲鍒楁暟閲� + textRenderData.setText("鏍囧噯鍙稝Stanard number"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } else if (j == 5) { + //绗叚鍒楀鐞嗘柟寮� + textRenderData.setText("鐢熸晥鏃ユ湡@Effective Date"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } else if (j == 6) { + //绗竷鍒楀鐞嗘柟寮� + textRenderData.setText("浣滃簾鏃ユ湡@Void date"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + }else { + //绗叓鍒楁椂闂� + textRenderData.setText("澶囨敞@Remaek"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + } + else { + //鍏朵粬琛� + if (j == 0) { + //绗竴鍒� + try{ + String sampleName = manageRecordVerifies.get((i-1) + (index1 - 1) * 20).getDocumentName(); + 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(manageRecordVerifies.get((i-1) + (index1 - 1) * 20).getDocumentName()); + } 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(manageRecordVerifies.get((i-1) + (index1 - 1) * 20).getDocumentCode()); + } 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(manageRecordVerifies.get((i-1) + (index1 - 1) * 20).getStandardName()); + } 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(manageRecordVerifies.get((i-1) + (index1 - 1) * 20).getStandardCode()); + } 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(manageRecordVerifies.get((i-1) + (index1 - 1) * 20).getEffectiveDate()+""); + } 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(manageRecordVerifies.get((i-1) + (index1 - 1) * 20).getCancelDate()+""); + } catch (Exception e) { + textRenderData.setText(""); + } + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else { + try{ + textRenderData.setText(manageRecordVerifies.get((i-1) + (index1 - 1) * 20).getNote()); + } 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("verify", tableRenderData); + table.put("index1", index1); + verifyList.add(table); + index1++; + } + } + Integer finalIndex = index1; + XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render( + new HashMap<String, Object>() {{ + put("verifyList", verifyList); + put("size", finalIndex); + put("submitDate", LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�"))); + put("submitDateEn", monthNames[LocalDate.now().getMonthValue() - 1] + " " + LocalDate.now().getDayOfMonth() + ", " + LocalDate.now().getYear()); + put("ratifyDate", "{{ratifyDate}}"); + put("ratifyDateEn","{{ratifyDateEn}}"); + put("ratifyUrl", null); + put("writeUrl", new FilePictureRenderData(100,50,imgUrl + "/" + signatureUrl)); + }}); + String name = UUID.randomUUID() + "_鏍峰搧澶勭悊鐢宠琛�" + ".docx"; + try { + template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name))); + } catch (IOException e) { + throw new RuntimeException(e); + } + //澶勭悊涓嫳鏂囨崲琛岀殑闂 + 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