From 966a2f8cabb284b2111735618f70499960248bac Mon Sep 17 00:00:00 2001 From: zhn <947514737@qq.com> Date: Thu, 28 Jul 2022 17:17:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=88=E6=8A=A5=E5=A1=AB=E5=86=99--=E6=95=B4?= =?UTF-8?q?=E5=90=88=E5=AF=BC=E5=87=BA=E4=B8=BB=E9=A1=B5=E9=9D=A2=E4=B8=AD?= =?UTF-8?q?=E8=8B=B1=E6=96=87=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LawsMonthlyReportWriteEOController.java | 6 +- .../ILawsMonthlyReportWriteEOService.java | 6 +- .../LawsMonthlyReportWriteEOServiceImpl.java | 148 ++++++++++++++++-- 3 files changed, 144 insertions(+), 16 deletions(-) diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/controller/LawsMonthlyReportWriteEOController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/controller/LawsMonthlyReportWriteEOController.java index 9f965309c..e4fb26d4e 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/controller/LawsMonthlyReportWriteEOController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/controller/LawsMonthlyReportWriteEOController.java @@ -183,8 +183,10 @@ public class LawsMonthlyReportWriteEOController extends JeroController exportMonthlyReport(LawsMonthlyReportWriteEO lawsMonthlyReportWriteEO) throws IOException { - return lawsMonthlyReportWriteEOService.exportMonthlyReport(lawsMonthlyReportWriteEO); + public void exportMonthlyReport(HttpServletResponse response, + HttpServletRequest request, + LawsMonthlyReportWriteEO lawsMonthlyReportWriteEO) throws IOException { + lawsMonthlyReportWriteEOService.exportMonthlyReport(response,request,lawsMonthlyReportWriteEO); } @ApiOperation(value="带入标准信息--分页", notes="带入标准信息--分页") diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/service/ILawsMonthlyReportWriteEOService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/service/ILawsMonthlyReportWriteEOService.java index 9f4e58fec..2f653b1b2 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/service/ILawsMonthlyReportWriteEOService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/service/ILawsMonthlyReportWriteEOService.java @@ -3,9 +3,9 @@ package com.jero.modules.report.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.jero.modules.report.entity.LawsMonthlyReportWriteEO; -import org.springframework.http.ResponseEntity; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; @@ -77,7 +77,9 @@ public interface ILawsMonthlyReportWriteEOService extends IService exportMonthlyReport(LawsMonthlyReportWriteEO lawsMonthlyReportWriteEO); + void exportMonthlyReport(HttpServletResponse response, + HttpServletRequest request, + LawsMonthlyReportWriteEO lawsMonthlyReportWriteEO); IPage queryPageDocument(Map parameter); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/service/impl/LawsMonthlyReportWriteEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/service/impl/LawsMonthlyReportWriteEOServiceImpl.java index 1739939b6..b51b54e76 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/service/impl/LawsMonthlyReportWriteEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/service/impl/LawsMonthlyReportWriteEOServiceImpl.java @@ -1,5 +1,7 @@ package com.jero.modules.report.service.impl; +import cn.hutool.core.util.ZipUtil; +import com.aliyuncs.utils.IOUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -32,15 +34,19 @@ import com.jero.modules.system.service.impl.SysDictItemServiceImpl; import com.jero.modules.system.util.StringUtils; import org.apache.poi.xwpf.usermodel.ParagraphAlignment; import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.aspectj.util.FileUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.io.File; +import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; +import java.io.OutputStream; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; @@ -327,7 +333,9 @@ public class LawsMonthlyReportWriteEOServiceImpl extends ServiceImpl exportMonthlyReport(LawsMonthlyReportWriteEO lawsMonthlyReportWriteEO) { + public void exportMonthlyReport(HttpServletResponse response, + HttpServletRequest request, + LawsMonthlyReportWriteEO lawsMonthlyReportWriteEO) { ResponseEntity result = null; //获取数据 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); @@ -353,17 +361,35 @@ public class LawsMonthlyReportWriteEOServiceImpl extends ServiceImpl lawsMonthlyReportWriteEOS, List lawsMonthlyReportTitleTemplateEOS){ + //一级菜单 + List parentIdList = lawsMonthlyReportTitleTemplateEOS.stream().map(LawsMonthlyReportTitleTemplateEO::getParentId).distinct().collect(Collectors.toList()); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(LawsMonthlyReportTitleTemplateEO::getId,parentIdList).orderByAsc(LawsMonthlyReportTitleTemplateEO::getSort); + List reportTitleOneList = lawsMonthlyReportTitleTemplateEOService.list(wrapper); //蔚来汽车法规月报-202004-主页面-CN //NIO Monthly Report on Automobile Regulations-202004-Main Page-EN String memoriesChapterCN = path + File.separator +"蔚来汽车法规月报" + lawsMonthlyReportWriteEOS.get(0).getMonth()+"主页面-CN.docx"; String memoriesChapterEN = path + File.separator +"NIO Monthly Report on Automobile Regulations-" + lawsMonthlyReportWriteEOS.get(0).getMonth()+"-Main Page-EN.docx"; + String titleCN = "蔚来汽车法规月报" + lawsMonthlyReportWriteEOS.get(0).getMonth(); + String titleEN = "NIO Monthly Report on Automobile Regulations-" + lawsMonthlyReportWriteEOS.get(0).getMonth(); File wordFile = new File(memoriesChapterCN); + File wordFileEn = new File(memoriesChapterEN); if(!wordFile.exists()){ try { wordFile.getParentFile().mkdirs(); wordFile.createNewFile(); } catch (IOException e) { - log.error("文件《"+memoriesChapterCN+"》创建失败"); + log.error("文件《"+titleCN+"》创建失败"); } } - try (XWPFDocument document = new XWPFDocument(); - FileOutputStream out = new FileOutputStream(wordFile)) { - WordUtil.exportWord(document, memoriesChapterCN, null, ParagraphAlignment.CENTER, 0, 12, false, true, "Microsoft YaHei UI"); - - - + try { + //主页面中文版 + XWPFDocument document = new XWPFDocument(); + FileOutputStream out = new FileOutputStream(wordFile); + word(lawsMonthlyReportWriteEOS, lawsMonthlyReportTitleTemplateEOS, reportTitleOneList, titleCN, document,CutEnum.CN.getValue()); + document.write(out); + //主页面英文版 + XWPFDocument documentEn = new XWPFDocument(); + FileOutputStream outCn = new FileOutputStream(wordFileEn); + word(lawsMonthlyReportWriteEOS, lawsMonthlyReportTitleTemplateEOS, reportTitleOneList, titleEN, documentEn,CutEnum.EN.getValue()); + documentEn.write(outCn); } catch (IOException e) { log.error("文件创建异常,异常信息为:" + e.getMessage()); } } + private void word(List lawsMonthlyReportWriteEOS, + List lawsMonthlyReportTitleTemplateEOS, + List reportTitleOneList, + String titleCN, + XWPFDocument document, + String cut) { + String content = ""; + if(CutEnum.CN.getValue().equals(cut)){ + content = "主要内容"; + }else{ + content = "Content"; + } + WordUtil.exportWord(document, titleCN, null, ParagraphAlignment.CENTER, 0, 12, false, true, "Microsoft YaHei UI"); + WordUtil.exportWord(document, content, null, ParagraphAlignment.LEFT, 0, 12, false, true, "Microsoft YaHei UI"); + int oneCount = 1; + + for (LawsMonthlyReportTitleTemplateEO lawsMonthlyReportTitleTemplateEO : reportTitleOneList) { + int twoCount = 1; + String oneNumber = intToRoman(oneCount); + //一级标题 + String oneTitle = ""; + if(CutEnum.CN.getValue().equals(cut)){ + oneTitle = lawsMonthlyReportTitleTemplateEO.getTitleCn(); + }else{ + oneTitle = lawsMonthlyReportTitleTemplateEO.getTitleEn(); + } + WordUtil.exportWord(document, oneNumber+" "+oneTitle, null, ParagraphAlignment.LEFT, 0, 12, false, true, "Microsoft YaHei UI"); + oneCount++; + List reportTitleTwoList = lawsMonthlyReportTitleTemplateEOS.stream().filter(e -> e.getParentId().equals(lawsMonthlyReportTitleTemplateEO.getId())).collect(Collectors.toList()); + + + for (LawsMonthlyReportTitleTemplateEO monthlyReportTitleTemplateEO : reportTitleTwoList) { + int reportCount = 1; + //子标题对应的月报填写的内容 + List lawsMonthlyReportWriteEOList = lawsMonthlyReportWriteEOS.stream().filter(e -> monthlyReportTitleTemplateEO.getId().equals(e.getMemoriesChapter())).collect(Collectors.toList()); + String twoNumber = intToRoman(twoCount); + twoNumber = oneNumber+"."+twoNumber; + + //二级标题 + String twoTitle = ""; + if(CutEnum.CN.getValue().equals(cut)){ + twoTitle = monthlyReportTitleTemplateEO.getTitleCn(); + }else{ + twoTitle = monthlyReportTitleTemplateEO.getTitleEn(); + } + WordUtil.exportWord(document, twoNumber+" "+twoTitle, null, ParagraphAlignment.LEFT, 2, 12, false, true, "Microsoft YaHei UI"); + twoCount++; + + for (LawsMonthlyReportWriteEO lawsMonthlyReportWriteEO : lawsMonthlyReportWriteEOList) { + //月报内容标题 + String reportTitle = ""; + if(CutEnum.CN.getValue().equals(cut)){ + reportTitle = lawsMonthlyReportWriteEO.getTitleCn(); + }else{ + reportTitle = lawsMonthlyReportWriteEO.getTitleEn(); + } + WordUtil.exportWord(document, reportCount+". "+reportTitle, null, ParagraphAlignment.LEFT, 6, 10, false, false, "Microsoft YaHei UI"); + reportCount++; + } + } + } + } + + /** + * 数字转罗马字 + * @param num + * @return + */ + public String intToRoman(int num) { + int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; + String[] symbols = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"}; + StringBuffer ss=new StringBuffer(); + for (int i=0;i=values[i]){ + num=num-values[i]; + ss.append(symbols[i]); + } + if (num==0){ + return ss.toString(); + } + } + System.out.println(ss); + return ss.toString(); + } + @Override public IPage queryPageDocument(Map parameter) { String cut = (String) parameter.get("cut");//中英文切换标识