From 7d9612ba46274d74b87d08c59f37a30a4409266d Mon Sep 17 00:00:00 2001 From: yjq Date: Mon, 5 Dec 2022 17:55:46 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3-=E6=B3=95=E8=A7=84=E6=9C=88?= =?UTF-8?q?=E6=8A=A5-=E6=8A=80=E6=9C=AF=E9=A2=86=E5=9F=9F=E8=A1=A5?= =?UTF-8?q?=E5=85=85=E5=AD=97=E6=AE=B5=20=E5=AF=BC=E5=87=BA=E6=97=B6?= =?UTF-8?q?=E5=92=8C=E6=8A=80=E6=9C=AF=E9=A2=86=E5=9F=9F=E4=B8=BA=E5=90=8C?= =?UTF-8?q?=E4=B8=80=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jero-boot/db/蔚来标准sql/dev_2nd_period.sql | 7 +- .../modules/compare/utils/CompHanLPUtils.java | 3 +- .../entity/LawsMonthlyReportWriteEO.java | 10 +- .../jero/modules/report/util/WordUtil.java | 414 ++++++++++-------- 4 files changed, 236 insertions(+), 198 deletions(-) diff --git a/jero-boot/db/蔚来标准sql/dev_2nd_period.sql b/jero-boot/db/蔚来标准sql/dev_2nd_period.sql index 9f052808b..cdf52eb5e 100644 --- a/jero-boot/db/蔚来标准sql/dev_2nd_period.sql +++ b/jero-boot/db/蔚来标准sql/dev_2nd_period.sql @@ -31,4 +31,9 @@ ADD COLUMN `explanation` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_gen ALTER TABLE `laws_weilai`.`params_manifest` ADD COLUMN `project_version_id` varchar(50) NULL COMMENT '项目相关版本对应的项目id' AFTER `explanation`; ALTER TABLE `laws_weilai`.`params_manifest_history` - ADD COLUMN `project_version_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '项目相关版本对应的项目id' AFTER `explanation`; \ No newline at end of file + ADD COLUMN `project_version_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '项目相关版本对应的项目id' AFTER `explanation`; + +-- 项目库添加字段(技术领域补充(中文),技术领域补充(英文))--------2022-12-05 未同步生产环境 +ALTER TABLE `laws_weilai`.`laws_monthly_report_write` + ADD COLUMN `technology_territory_cn` varchar(500) NULL COMMENT '技术领域补充(中文)' AFTER `memories_chapter_one`, + ADD COLUMN `technology_territory_en` varchar(500) NULL COMMENT '技术领域补充(英文)' AFTER `technology_territory_cn`; diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/compare/utils/CompHanLPUtils.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/compare/utils/CompHanLPUtils.java index 4f488e213..e7f52387e 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/compare/utils/CompHanLPUtils.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/compare/utils/CompHanLPUtils.java @@ -17,8 +17,7 @@ import java.io.IOException; import java.io.StringReader; import java.text.NumberFormat; import java.util.*; -import java.util. -import java.util.stream.Collectors;.Collectors; +import java.util.stream.Collectors; @Slf4j public class CompHanLPUtils { diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/entity/LawsMonthlyReportWriteEO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/entity/LawsMonthlyReportWriteEO.java index 3d91a9ccb..0f3afd9b6 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/entity/LawsMonthlyReportWriteEO.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/entity/LawsMonthlyReportWriteEO.java @@ -29,7 +29,7 @@ import java.util.List; @Accessors(chain = true) @EqualsAndHashCode(callSuper = false) @ApiModel(value="laws_monthly_report_write对象", description="月报填写") -public class LawsMonthlyReportWriteEO implements Serializable { +public class LawsMonthlyReportWriteEO implements Serializable { private static final long serialVersionUID = 1L; /**主键*/ @@ -104,6 +104,14 @@ public class LawsMonthlyReportWriteEO implements Serializable { @ApiModelProperty(value = "相关领域") private java.lang.String technologyTerritory; + @ApiModelProperty(value = "技术领域补充中文") + private java.lang.String technologyTerritoryCn; + + @ApiModelProperty(value = "相关领域补充英文") + private java.lang.String technologyTerritoryEn; + + + @TableField(exist = false) private java.lang.String technologyTerritoryName; diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/util/WordUtil.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/util/WordUtil.java index 0f1b86ca2..042b77c15 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/util/WordUtil.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/util/WordUtil.java @@ -44,18 +44,18 @@ public class WordUtil { /** * 导出工具示例 * - * @param document POI文件类 - * @param text 输出文本 - * @param textColor 字体颜色 - * @param align 字体位置,默认居左 - * @param spaceNum 预留空格数,默认不留空格 - * @param fontSize 字体大小,默认11 - * @param isNewline 是否换行,换行后文本失效 - * @param isBold 是否加粗,默认不加粗 - * @param fontFamily 字体,默认宋体 + * @param document POI文件类 + * @param text 输出文本 + * @param textColor 字体颜色 + * @param align 字体位置,默认居左 + * @param spaceNum 预留空格数,默认不留空格 + * @param fontSize 字体大小,默认11 + * @param isNewline 是否换行,换行后文本失效 + * @param isBold 是否加粗,默认不加粗 + * @param fontFamily 字体,默认宋体 * @param directoryLevel 目录级别 - * @param styleName 标题样式 - * @param flag 封面标识(不做行间距处理) + * @param styleName 标题样式 + * @param flag 封面标识(不做行间距处理) */ public static void exportWord(XWPFDocument document, String text, @@ -71,8 +71,8 @@ public class WordUtil { String flag) { //设置标题级别 - if(StringUtils.isNotEmpty(directoryLevel)){ - addCustomHeadingStyle(document,styleName,Integer.parseInt(directoryLevel)); + if (StringUtils.isNotEmpty(directoryLevel)) { + addCustomHeadingStyle(document, styleName, Integer.parseInt(directoryLevel)); } XWPFParagraph titleParagraph = document.createParagraph(); @@ -80,10 +80,10 @@ public class WordUtil { //设置行间距 - if(!"cover".equals(flag) && !"oneTitle".equals(flag)){ + if (!"cover".equals(flag) && !"oneTitle".equals(flag)) { CTP ctp = titleParagraph.getCTP(); CTPPr ppr = ctp.isSetPPr() ? ctp.getPPr() : ctp.addNewPPr(); - CTSpacing spacing = ppr.isSetSpacing()? ppr.getSpacing() : ppr.addNewSpacing(); + CTSpacing spacing = ppr.isSetSpacing() ? ppr.getSpacing() : ppr.addNewSpacing(); spacing.setAfter(BigInteger.valueOf(120));//行间距后段为6磅 spacing.setBefore(BigInteger.valueOf(300));//行间距前段为15磅, 300是通过单位换算来的 // //设置行距类型为 EXACT @@ -101,7 +101,7 @@ public class WordUtil { XWPFRun titleParagraphRun = titleParagraph.createRun(); //封面中的换行 - if("break".equals(flag)){ + if ("break".equals(flag)) { titleParagraphRun.addBreak(); } if (isNewline) { @@ -180,7 +180,7 @@ public class WordUtil { //主要内容生成页眉页脚(office版本) @SneakyThrows - public static void exportHeardAndFoot(XWPFDocument document,String month,String cut){ + public static void exportHeardAndFoot(XWPFDocument document, String month, String cut) { XWPFHeaderFooterPolicy headerFooterPolicy = document.getHeaderFooterPolicy(); if (headerFooterPolicy == null) headerFooterPolicy = document.createHeaderFooterPolicy(); XWPFHeader header = headerFooterPolicy.createHeader(XWPFHeaderFooterPolicy.DEFAULT); @@ -198,18 +198,18 @@ public class WordUtil { // InputStream is = new FileInputStream(imgFile); XWPFPicture picture = run.addPicture(is, XWPFDocument.PICTURE_TYPE_PNG, imgFile, Units.toEMU(95), Units.toEMU(35)); String blipID = ""; - for(XWPFPictureData picturedata : header.getAllPackagePictures()) { //这段必须有,不然打开的logo图片不显示 + for (XWPFPictureData picturedata : header.getAllPackagePictures()) { //这段必须有,不然打开的logo图片不显示 blipID = header.getRelationId(picturedata); } picture.getCTPicture().getBlipFill().getBlip().setEmbed(blipID); run.addTab(); is.close(); - if(CutEnum.CN.getValue().equals(cut)){ - run.setText(" "+month+" (总第 期)"); - }else{ + if (CutEnum.CN.getValue().equals(cut)) { + run.setText(" " + month + " (总第 期)"); + } else { String replace = month.replace("年", " ").replace("月", ""); - String monthTemp = replace.split(" ")[1]+"/"+replace.split(" ")[0]; - run.setText(" "+monthTemp+" (Issue No. )"); + String monthTemp = replace.split(" ")[1] + "/" + replace.split(" ")[0]; + run.setText(" " + monthTemp + " (Issue No. )"); } run.setFontSize(11); @@ -255,7 +255,6 @@ public class WordUtil { //---------------------------------------------------------------------------- - CTSectPr sectPr = document.getDocument().getBody().getSectPr(); if (sectPr == null) sectPr = document.getDocument().getBody().addNewSectPr(); //设置页面大小(21*29.7) @@ -362,11 +361,12 @@ public class WordUtil { /** * 主页面(只有页脚) + * * @param document * @param month */ @SneakyThrows - public static void exportHeardAndFootMain(XWPFDocument document,String month){ + public static void exportHeardAndFootMain(XWPFDocument document, String month) { XWPFHeaderFooterPolicy headerFooterPolicy = document.getHeaderFooterPolicy(); if (headerFooterPolicy == null) headerFooterPolicy = document.createHeaderFooterPolicy(); // XWPFHeader header = headerFooterPolicy.createHeader(XWPFHeaderFooterPolicy.DEFAULT); @@ -455,14 +455,14 @@ public class WordUtil { * @param fontFamily 字体,默认宋体 */ public static void exportWordMonth(XWPFDocument document, - String text, - String textColor, - ParagraphAlignment align, - Integer spaceNum, - Integer fontSize, - Boolean isNewline, - Boolean isBold, - String fontFamily) { + String text, + String textColor, + ParagraphAlignment align, + Integer spaceNum, + Integer fontSize, + Boolean isNewline, + Boolean isBold, + String fontFamily) { //添加标题 XWPFParagraph titleParagraph = document.createParagraph(); @@ -522,6 +522,8 @@ public class WordUtil { String cut, List loginUserList) { String technologyTerritory = lawsMonthlyReportWriteEO.getTechnologyTerritory();//技术领域 + String technologyTerritoryCn = lawsMonthlyReportWriteEO.getTechnologyTerritoryCn();//技术领域补充中文 + String technologyTerritoryEn = lawsMonthlyReportWriteEO.getTechnologyTerritoryEn();//技术领域补充英文 String applyCar = lawsMonthlyReportWriteEO.getApplyCar();//适用车型 String applyScope = lawsMonthlyReportWriteEO.getApplyScope();//适用范围 String state = lawsMonthlyReportWriteEO.getState();//状态 @@ -557,7 +559,7 @@ public class WordUtil { String link = lawsMonthlyReportWriteEO.getLink();//链接 String technologyTerritoryName = ""; - if(org.apache.commons.lang3.StringUtils.isNotBlank(technologyTerritory)){ + if (org.apache.commons.lang3.StringUtils.isNotBlank(technologyTerritory)) { List technologyTerritoryList = Arrays.asList(technologyTerritory.split(",")); StringBuilder sb = new StringBuilder(); for (String technologyTerritoryTemp : technologyTerritoryList) { @@ -566,16 +568,27 @@ public class WordUtil { sb.append(collect.get(0).getName() + ","); } } + //拼接技术领域补充内容 + if (cut.equals("cn")) { + if (StringUtils.isNotBlank(technologyTerritoryCn)) { + sb.append(" 补充:"+technologyTerritoryCn); + } + } else { + if (StringUtils.isNotBlank(technologyTerritoryEn)) { + sb.append(" replenish:"+technologyTerritoryEn); + } + } + if (org.apache.commons.lang3.StringUtils.isNotBlank(sb)) { - technologyTerritoryName = sb.substring(0, sb.length() - 1); + technologyTerritoryName = sb.substring(0, sb.length()); } } //适用车型中文名 - String applyCarName = dictItem(sysDictItems, applyCar,cut, DictCodeReportEnum.APPLYCAR.getValue()); - String applyScopeName = dictItem(sysDictItems, applyScope,cut, DictCodeReportEnum.APPLYSCOPE.getValue()); - String stateName = dictItem(sysDictItems, state,cut, DictCodeReportEnum.STATE_REPORT.getValue()); - String useMethodName = dictItem(sysDictItems, useMethod,cut, DictCodeReportEnum.USEMETHOD.getValue()); - if(useMethodName.equals("安装即符合")){ + String applyCarName = dictItem(sysDictItems, applyCar, cut, DictCodeReportEnum.APPLYCAR.getValue()); + String applyScopeName = dictItem(sysDictItems, applyScope, cut, DictCodeReportEnum.APPLYSCOPE.getValue()); + String stateName = dictItem(sysDictItems, state, cut, DictCodeReportEnum.STATE_REPORT.getValue()); + String useMethodName = dictItem(sysDictItems, useMethod, cut, DictCodeReportEnum.USEMETHOD.getValue()); + if (useMethodName.equals("安装即符合")) { useMethodName = "安装需符合"; } XWPFTable table = document.createTable(10, 2); @@ -596,56 +609,56 @@ public class WordUtil { //第1行 - if(CutEnum.CN.getValue().equals(cut)){ + if (CutEnum.CN.getValue().equals(cut)) { //第1行 - setCell(table, 0, "相关领域",technologyTerritoryName); + setCell(table, 0, "相关领域", technologyTerritoryName); //第2行 // setCell(table,1, "适用车型",applyCarName); //第3行 - setCellThree(table,1, "适用范围",applyScopeName,sysDictItems,DictCodeReportEnum.APPLYSCOPE.getValue()); + setCellThree(table, 1, "适用范围", applyScopeName, sysDictItems, DictCodeReportEnum.APPLYSCOPE.getValue()); //第4行 - setCellThree(table,2, "状态",stateName,sysDictItems,DictCodeReportEnum.STATE.getValue()); + setCellThree(table, 2, "状态", stateName, sysDictItems, DictCodeReportEnum.STATE.getValue()); //第5行 - setCellThree(table,3, "用法",useMethodName,sysDictItems,DictCodeReportEnum.USEMETHOD.getValue()); + setCellThree(table, 3, "用法", useMethodName, sysDictItems, DictCodeReportEnum.USEMETHOD.getValue()); //第6行 // setCell(table,4, "实施车型",implementCar); //第7行 - setCell(table,4, "发布日期",newCarImplementTime); + setCell(table, 4, "发布日期", newCarImplementTime); //第8行 - setCell(table,5, "实施日期",productionCarImplementTime); + setCell(table, 5, "实施日期", productionCarImplementTime); //第9行 - setCell(table,6, "主要内容",contentCn); + setCell(table, 6, "主要内容", contentCn); //第10行 - setCell(table,7, "NIO工作进展",workProgressCn); + setCell(table, 7, "NIO工作进展", workProgressCn); //第11行 - setCell(table,8, "法规联系人",lawsContact); + setCell(table, 8, "法规联系人", lawsContact); //第12行 - setCell(table,9, "链接",link); - }else{ + setCell(table, 9, "链接", link); + } else { //第1行 - setCell(table,0, "Relevant Area",technologyTerritoryName); + setCell(table, 0, "Relevant Area", technologyTerritoryName); //第2行 // setCell(table,1,"Vehicle Type",applyCarName); //第3行 - setCellThree(table,1,"Scope",applyScopeName,sysDictItems,DictCodeReportEnum.APPLYSCOPE.getValue()); + setCellThree(table, 1, "Scope", applyScopeName, sysDictItems, DictCodeReportEnum.APPLYSCOPE.getValue()); //第4行 - setCellThree(table,2,"Status",stateName,sysDictItems,DictCodeReportEnum.APPLYSCOPE.getValue()); + setCellThree(table, 2, "Status", stateName, sysDictItems, DictCodeReportEnum.APPLYSCOPE.getValue()); //第5行 - setCellThree(table,3,"Usage",useMethodName,sysDictItems,DictCodeReportEnum.APPLYSCOPE.getValue()); + setCellThree(table, 3, "Usage", useMethodName, sysDictItems, DictCodeReportEnum.APPLYSCOPE.getValue()); //第6行 // setCell(table,4,"Implementation Model",implementCar); //第7行 - setCell(table,4,"Release Date",newCarImplementTime); + setCell(table, 4, "Release Date", newCarImplementTime); //第8行 - setCell(table,5,"Effective Date",productionCarImplementTime); + setCell(table, 5, "Effective Date", productionCarImplementTime); //第9行 - setCell(table,6,"Description",contentEn); + setCell(table, 6, "Description", contentEn); //第10行 - setCell(table,7,"NIO Work Progress",workProgressEn); + setCell(table, 7, "NIO Work Progress", workProgressEn); //第11行 - setCell(table,8,"Reg. Contact",lawsContact); + setCell(table, 8, "Reg. Contact", lawsContact); //第12行 - setCell(table, 9,"Link",link); + setCell(table, 9, "Link", link); } // ctTblLayoutType.setType(STTblLayoutType.FIXED); @@ -653,10 +666,11 @@ public class WordUtil { /** * 已固定长度分隔字符串 + * * @param str * @return */ - public List splitStr(String str){ + public List splitStr(String str) { //检查参数是否合法 if (null == str || str.equals("")) { return new ArrayList<>(); @@ -666,7 +680,7 @@ public class WordUtil { List list = new ArrayList<>(); for (int i = 0; i < n; i++) { if (i < (n - 1)) { - list.add(str.substring(i * length, (i + 1) * length)) ; + list.add(str.substring(i * length, (i + 1) * length)); } else { list.add(str.substring(i * length)); } @@ -676,30 +690,35 @@ public class WordUtil { /** * 判断字符串是否完全由数字组成 + * * @param str * @return */ - public boolean verifyFigure(String str){ + public boolean verifyFigure(String str) { Pattern p = Pattern.compile("[0-9]*"); Matcher m = p.matcher(str); return m.matches(); } + /** * 判断字符串是否完全由字母组成 + * * @param str * @return */ - public boolean verifyEn(String str){ + public boolean verifyEn(String str) { Pattern enPatten = Pattern.compile("^[a-zA-Z]*"); Matcher enMatch = enPatten.matcher(str); return enMatch.matches(); } + /** * 判断字符串是否完全由数字和字母组成 + * * @param str * @return */ - public boolean verifyFigureAndEn(String str){ + public boolean verifyFigureAndEn(String str) { Pattern figureAndEnPattern = Pattern.compile("[0-9a-zA-Z]{1,}"); Matcher figureAndEnMatcher = figureAndEnPattern.matcher(str); return figureAndEnMatcher.matches(); @@ -707,13 +726,14 @@ public class WordUtil { /** * 行业资讯动态 + * * @param document * @param lawsMonthlyReportWriteEO * @param cut */ public static void exportWordExcelIndustry(XWPFDocument document, - LawsMonthlyReportWriteEO lawsMonthlyReportWriteEO, - String cut) { + LawsMonthlyReportWriteEO lawsMonthlyReportWriteEO, + String cut) { String relatedAreasCn = lawsMonthlyReportWriteEO.getRelatedAreasCn();//相关领域中文 String relatedAreasEn = lawsMonthlyReportWriteEO.getRelatedAreasEn();//相关领域英文 String sourceCn = lawsMonthlyReportWriteEO.getSourceCn();//来源 @@ -742,36 +762,37 @@ public class WordUtil { //第1行 - if(CutEnum.CN.getValue().equals(cut)){ + if (CutEnum.CN.getValue().equals(cut)) { //第1行 - setCell(table, 0, "相关领域",relatedAreasCn); + setCell(table, 0, "相关领域", relatedAreasCn); //第2行 - setCell(table,1, "来源",sourceCn); + setCell(table, 1, "来源", sourceCn); //第3行 - setCell(table,2, "日期",time); + setCell(table, 2, "日期", time); //第4行 - setCell(table,3, "主要内容",contentCn); + setCell(table, 3, "主要内容", contentCn); //第5行 - setCell(table,4, "链接",link); - }else{ + setCell(table, 4, "链接", link); + } else { //第1行 - setCell(table,0, "Relevant Area",relatedAreasEn); + setCell(table, 0, "Relevant Area", relatedAreasEn); //第2行 - setCell(table,1,"Source",sourceEn); + setCell(table, 1, "Source", sourceEn); //第3行 - setCell(table,2,"Date",time); + setCell(table, 2, "Date", time); //第4行 - setCell(table,3,"Description",contentEn); + setCell(table, 3, "Description", contentEn); //第5行 - setCell(table,4,"Link",link); + setCell(table, 4, "Link", link); } } + public static void exportWordExcelAsk(XWPFDocument document, - LawsMonthlyReportWriteEO lawsMonthlyReportWriteEO, - String cut) { + LawsMonthlyReportWriteEO lawsMonthlyReportWriteEO, + String cut) { List newOpinionTemplateEOList = lawsMonthlyReportWriteEO.getNewOpinionTemplateEOList(); - if(ObjectUtils.isNotEmpty(newOpinionTemplateEOList)){ - XWPFTable table = document.createTable(newOpinionTemplateEOList.size()+1, 4); + if (ObjectUtils.isNotEmpty(newOpinionTemplateEOList)) { + XWPFTable table = document.createTable(newOpinionTemplateEOList.size() + 1, 4); //表格属性 CTTblPr tablePr = table.getCTTbl().addNewTblPr(); //固定列宽(英文和数字的时候自动换行) @@ -786,30 +807,31 @@ public class WordUtil { //设置表格宽度 tableWidth.setType(STTblWidth.DXA); tableWidth.setW(BigInteger.valueOf(8311)); - if(CutEnum.CN.getValue().equals(cut)){ - setCellAskOne(table,"序号","计划号","标准名称","征求意见截止日期"); - }else{ - setCellAskOne(table,"Number","Plan Number","Standard Name","Deadline For Comments"); + if (CutEnum.CN.getValue().equals(cut)) { + setCellAskOne(table, "序号", "计划号", "标准名称", "征求意见截止日期"); + } else { + setCellAskOne(table, "Number", "Plan Number", "Standard Name", "Deadline For Comments"); } for (int i = 0; i < newOpinionTemplateEOList.size(); i++) { String planNumberCn = newOpinionTemplateEOList.get(i).getPlanNumberCn();//计划号 String standardNameCn = newOpinionTemplateEOList.get(i).getStandardNameCn();//标准名称中文 String standardNameEn = newOpinionTemplateEOList.get(i).getStandardNameEn();//标准名称英文 String expirationDate = newOpinionTemplateEOList.get(i).getExpirationDate();//征求意见截止日期 - if(CutEnum.CN.getValue().equals(cut)){ - setCellAsk(table, i+1, planNumberCn, standardNameCn, expirationDate); - }else{ - setCellAsk(table, i+1, planNumberCn, standardNameEn, expirationDate); + if (CutEnum.CN.getValue().equals(cut)) { + setCellAsk(table, i + 1, planNumberCn, standardNameCn, expirationDate); + } else { + setCellAsk(table, i + 1, planNumberCn, standardNameEn, expirationDate); } } } } + public static void exportWordExcelIssue(XWPFDocument document, - LawsMonthlyReportWriteEO lawsMonthlyReportWriteEO, - String cut) { + LawsMonthlyReportWriteEO lawsMonthlyReportWriteEO, + String cut) { List newStandardTemplateEOList = lawsMonthlyReportWriteEO.getNewStandardTemplateEOList(); - if(ObjectUtils.isNotEmpty(newStandardTemplateEOList)){ - XWPFTable table = document.createTable(newStandardTemplateEOList.size()+1, 5); + if (ObjectUtils.isNotEmpty(newStandardTemplateEOList)) { + XWPFTable table = document.createTable(newStandardTemplateEOList.size() + 1, 5); //表格属性 CTTblPr tablePr = table.getCTTbl().addNewTblPr(); //固定列宽(英文和数字的时候自动换行) @@ -824,21 +846,21 @@ public class WordUtil { //设置表格宽度 tableWidth.setType(STTblWidth.DXA); tableWidth.setW(BigInteger.valueOf(8311)); - if(CutEnum.CN.getValue().equals(cut)){ - setCellIssueOne(table,"序号","标准编号","标准名称","发布日期","实施日期"); - }else{ - setCellIssueOne(table,"Number","Standard Number","Standard Name","Release Date","Implementation date"); + if (CutEnum.CN.getValue().equals(cut)) { + setCellIssueOne(table, "序号", "标准编号", "标准名称", "发布日期", "实施日期"); + } else { + setCellIssueOne(table, "Number", "Standard Number", "Standard Name", "Release Date", "Implementation date"); } for (int i = 0; i < newStandardTemplateEOList.size(); i++) { - String standardNumber = newStandardTemplateEOList.get(i ).getStandardNumber();//标准编号 + String standardNumber = newStandardTemplateEOList.get(i).getStandardNumber();//标准编号 String standardNameCn = newStandardTemplateEOList.get(i).getStandardNameCn();//标准名称中文 String standardNameEn = newStandardTemplateEOList.get(i).getStandardNameEn();//标准名称英文 String issueTime = newStandardTemplateEOList.get(i).getIssueTime();//发布日期 String implementTime = newStandardTemplateEOList.get(i).getImplementTime();//实施日期 - if(CutEnum.CN.getValue().equals(cut)){ - setCellIssue(table, i+1, standardNumber, standardNameCn, issueTime,implementTime); - }else{ - setCellIssue(table, i+1, standardNumber, standardNameEn, issueTime,implementTime); + if (CutEnum.CN.getValue().equals(cut)) { + setCellIssue(table, i + 1, standardNumber, standardNameCn, issueTime, implementTime); + } else { + setCellIssue(table, i + 1, standardNumber, standardNameEn, issueTime, implementTime); } } } @@ -854,35 +876,36 @@ public class WordUtil { ctTblWidth0.setW(BigInteger.valueOf(703)); //设置单元格边距 XWPFTableCell cell0 = table.getRow(i).getCell(0); - cellPadding(cell0,String.valueOf(i)); + cellPadding(cell0, String.valueOf(i)); CTTblWidth ctTblWidth1 = table.getRow(i).getCell(1).getCTTc().addNewTcPr().addNewTcW(); ctTblWidth1.setType(STTblWidth.DXA); ctTblWidth1.setW(BigInteger.valueOf(1984)); //设置单元格边距 XWPFTableCell cell1 = table.getRow(i).getCell(1); - cellPadding(cell1,planNumber); + cellPadding(cell1, planNumber); CTTblWidth ctTblWidth2 = table.getRow(i).getCell(2).getCTTc().addNewTcPr().addNewTcW(); ctTblWidth2.setType(STTblWidth.DXA); ctTblWidth2.setW(BigInteger.valueOf(3543)); //设置单元格边距 XWPFTableCell cell2 = table.getRow(i).getCell(2); - cellPadding(cell2,standardName); + cellPadding(cell2, standardName); CTTblWidth ctTblWidth3 = table.getRow(i).getCell(3).getCTTc().addNewTcPr().addNewTcW(); ctTblWidth3.setType(STTblWidth.DXA); ctTblWidth3.setW(BigInteger.valueOf(2081)); //设置单元格边距 XWPFTableCell cell3 = table.getRow(i).getCell(3); - cellPadding(cell3,expirationDate); + cellPadding(cell3, expirationDate); // table.getRow(i).getCell(0).setText(String.valueOf(i)); // table.getRow(i).getCell(1).setText(planNumber); // table.getRow(i).getCell(2).setText(standardName); // table.getRow(i).getCell(3).setText(expirationDate); } - private static void setCellIssue(XWPFTable table, int i, String planNumber, String standardName, String expirationDate,String implementTime) { + + private static void setCellIssue(XWPFTable table, int i, String planNumber, String standardName, String expirationDate, String implementTime) { //设置单元格高度 table.getRow(i).setHeight(500); @@ -892,35 +915,35 @@ public class WordUtil { ctTblWidth0.setW(BigInteger.valueOf(708)); //设置单元格边距 XWPFTableCell cell0 = table.getRow(i).getCell(0); - cellPadding(cell0,String.valueOf(i)); + cellPadding(cell0, String.valueOf(i)); CTTblWidth ctTblWidth1 = table.getRow(i).getCell(1).getCTTc().addNewTcPr().addNewTcW(); ctTblWidth1.setType(STTblWidth.DXA); ctTblWidth1.setW(BigInteger.valueOf(1990)); //设置单元格边距 XWPFTableCell cell1 = table.getRow(i).getCell(1); - cellPadding(cell1,planNumber); + cellPadding(cell1, planNumber); CTTblWidth ctTblWidth2 = table.getRow(i).getCell(2).getCTTc().addNewTcPr().addNewTcW(); ctTblWidth2.setType(STTblWidth.DXA); ctTblWidth2.setW(BigInteger.valueOf(3124)); //设置单元格边距 XWPFTableCell cell2 = table.getRow(i).getCell(2); - cellPadding(cell2,standardName); + cellPadding(cell2, standardName); CTTblWidth ctTblWidth3 = table.getRow(i).getCell(3).getCTTc().addNewTcPr().addNewTcW(); ctTblWidth3.setType(STTblWidth.DXA); ctTblWidth3.setW(BigInteger.valueOf(1247)); //设置单元格边距 XWPFTableCell cell3 = table.getRow(i).getCell(3); - cellPadding(cell3,expirationDate); + cellPadding(cell3, expirationDate); CTTblWidth ctTblWidth4 = table.getRow(i).getCell(4).getCTTc().addNewTcPr().addNewTcW(); ctTblWidth4.setType(STTblWidth.DXA); ctTblWidth4.setW(BigInteger.valueOf(1247)); //设置单元格边距 XWPFTableCell cell4 = table.getRow(i).getCell(4); - cellPadding(cell4,implementTime); + cellPadding(cell4, implementTime); // table.getRow(i).getCell(0).setText(String.valueOf(i)); // table.getRow(i).getCell(1).setText(planNumber); @@ -928,7 +951,8 @@ public class WordUtil { // table.getRow(i).getCell(3).setText(expirationDate); // table.getRow(i).getCell(4).setText(implementTime); } - private static void setCellIssueOne(XWPFTable table, String number,String planNumber, String standardName, String expirationDate,String implementTime) { + + private static void setCellIssueOne(XWPFTable table, String number, String planNumber, String standardName, String expirationDate, String implementTime) { //设置单元格高度 table.getRow(0).setHeight(500); @@ -938,35 +962,35 @@ public class WordUtil { ctTblWidth0.setW(BigInteger.valueOf(708)); //设置单元格边距 XWPFTableCell cell0 = table.getRow(0).getCell(0); - cellPadding(cell0,number); + cellPadding(cell0, number); CTTblWidth ctTblWidth1 = table.getRow(0).getCell(1).getCTTc().addNewTcPr().addNewTcW(); ctTblWidth1.setType(STTblWidth.DXA); ctTblWidth1.setW(BigInteger.valueOf(1990)); //设置单元格边距 XWPFTableCell cell1 = table.getRow(0).getCell(1); - cellPadding(cell1,planNumber); + cellPadding(cell1, planNumber); CTTblWidth ctTblWidth2 = table.getRow(0).getCell(2).getCTTc().addNewTcPr().addNewTcW(); ctTblWidth2.setType(STTblWidth.DXA); ctTblWidth2.setW(BigInteger.valueOf(3124)); //设置单元格边距 XWPFTableCell cell2 = table.getRow(0).getCell(2); - cellPadding(cell2,standardName); + cellPadding(cell2, standardName); CTTblWidth ctTblWidth3 = table.getRow(0).getCell(3).getCTTc().addNewTcPr().addNewTcW(); ctTblWidth3.setType(STTblWidth.DXA); ctTblWidth3.setW(BigInteger.valueOf(1247)); //设置单元格边距 XWPFTableCell cell3 = table.getRow(0).getCell(3); - cellPadding(cell3,expirationDate); + cellPadding(cell3, expirationDate); CTTblWidth ctTblWidth4 = table.getRow(0).getCell(4).getCTTc().addNewTcPr().addNewTcW(); ctTblWidth4.setType(STTblWidth.DXA); ctTblWidth4.setW(BigInteger.valueOf(1247)); //设置单元格边距 XWPFTableCell cell4 = table.getRow(0).getCell(4); - cellPadding(cell4,implementTime); + cellPadding(cell4, implementTime); // table.getRow(0).getCell(0).setText(number); // table.getRow(0).getCell(1).setText(planNumber); @@ -974,7 +998,8 @@ public class WordUtil { // table.getRow(0).getCell(3).setText(expirationDate); // table.getRow(0).getCell(4).setText(implementTime); } - private static void setCellAskOne(XWPFTable table, String number,String planNumber, String standardName, String expirationDate) { + + private static void setCellAskOne(XWPFTable table, String number, String planNumber, String standardName, String expirationDate) { //设置单元格高度 table.getRow(0).setHeight(500); @@ -984,28 +1009,28 @@ public class WordUtil { ctTblWidth0.setW(BigInteger.valueOf(703)); //设置单元格边距 XWPFTableCell cell0 = table.getRow(0).getCell(0); - cellPadding(cell0,number); + cellPadding(cell0, number); CTTblWidth ctTblWidth1 = table.getRow(0).getCell(1).getCTTc().addNewTcPr().addNewTcW(); ctTblWidth1.setType(STTblWidth.DXA); ctTblWidth1.setW(BigInteger.valueOf(1984)); //设置单元格边距 XWPFTableCell cell1 = table.getRow(0).getCell(1); - cellPadding(cell1,planNumber); + cellPadding(cell1, planNumber); CTTblWidth ctTblWidth2 = table.getRow(0).getCell(2).getCTTc().addNewTcPr().addNewTcW(); ctTblWidth2.setType(STTblWidth.DXA); ctTblWidth2.setW(BigInteger.valueOf(3543)); //设置单元格边距 XWPFTableCell cell2 = table.getRow(0).getCell(2); - cellPadding(cell2,standardName); + cellPadding(cell2, standardName); CTTblWidth ctTblWidth3 = table.getRow(0).getCell(3).getCTTc().addNewTcPr().addNewTcW(); ctTblWidth3.setType(STTblWidth.DXA); ctTblWidth3.setW(BigInteger.valueOf(2081)); //设置单元格边距 XWPFTableCell cell3 = table.getRow(0).getCell(3); - cellPadding(cell3,expirationDate); + cellPadding(cell3, expirationDate); // table.getRow(0).getCell(0).setText(number); // table.getRow(0).getCell(1).setText(planNumber); @@ -1014,51 +1039,51 @@ public class WordUtil { } - private static String dictItem(List sysDictItems, String fieldValue,String cut,String dictCode) { + private static String dictItem(List sysDictItems, String fieldValue, String cut, String dictCode) { String fieldValueName = ""; - if(StringUtils.isNotEmpty(fieldValue)){ + if (StringUtils.isNotEmpty(fieldValue)) { List fieldValueList = Arrays.asList(fieldValue.split(",")); StringBuilder sb = new StringBuilder(); for (String fieldValueTemp : fieldValueList) { List collect = sysDictItems.stream() .filter(e -> fieldValueTemp.equals(e.getItemValue()) && dictCode.equals(e.getDictCode())) .collect(Collectors.toList()); - if(collect.size() != 0){ - if(CutEnum.CN.getValue().equals(cut)){ + if (collect.size() != 0) { + if (CutEnum.CN.getValue().equals(cut)) { sb.append(collect.get(0).getItemText() + ","); - }else{ + } else { sb.append(collect.get(0).getEnName() + ","); } } } - if(org.apache.commons.lang3.StringUtils.isNotBlank(sb)){ + if (org.apache.commons.lang3.StringUtils.isNotBlank(sb)) { fieldValueName = sb.substring(0, sb.length() - 1); } } return fieldValueName; } - private static void setCell(XWPFTable table, int number, String fieldName,String technologyTerritory) { + private static void setCell(XWPFTable table, int number, String fieldName, String technologyTerritory) { table.getRow(number).setHeight(500); CTTblWidth ctTblWidth0 = table.getRow(number).getCell(0).getCTTc().addNewTcPr().addNewTcW(); ctTblWidth0.setType(STTblWidth.DXA); ctTblWidth0.setW(BigInteger.valueOf(2296));//宽度通过计算得来-->列表实际宽度除以2.54再乘以1440 //设置单元格边距 XWPFTableCell cell0 = table.getRow(number).getCell(0); - cellPadding(cell0,fieldName); + cellPadding(cell0, fieldName); CTTblWidth ctTblWidth1 = table.getRow(number).getCell(1).getCTTc().addNewTcPr().addNewTcW(); ctTblWidth1.setType(STTblWidth.DXA); ctTblWidth1.setW(BigInteger.valueOf(6015)); //设置单元格边距 XWPFTableCell cell1 = table.getRow(number).getCell(1); - if("链接".equals(fieldName) || "Link".equals(fieldName)){ + if ("链接".equals(fieldName) || "Link".equals(fieldName)) { //设置超链接 - if(StringUtils.isNotEmpty(technologyTerritory)){ - cellLink(cell1,technologyTerritory); + if (StringUtils.isNotEmpty(technologyTerritory)) { + cellLink(cell1, technologyTerritory); } - }else{ - cellPadding(cell1,technologyTerritory); + } else { + cellPadding(cell1, technologyTerritory); } // XWPFParagraph para = table.getRow(number).getCell(1).getParagraphs().get(0); @@ -1069,32 +1094,33 @@ public class WordUtil { // table.getRow(number).getCell(1).setText(technologyTerritory); } - private static void setCellThree(XWPFTable table, int number, String fieldName,String technologyTerritory, - List sysDictItems,String code) { + + private static void setCellThree(XWPFTable table, int number, String fieldName, String technologyTerritory, + List sysDictItems, String code) { table.getRow(number).setHeight(500); CTTblWidth ctTblWidth0 = table.getRow(number).getCell(0).getCTTc().addNewTcPr().addNewTcW(); ctTblWidth0.setType(STTblWidth.DXA); ctTblWidth0.setW(BigInteger.valueOf(2296));//宽度通过计算得来-->列表实际宽度除以2.54再乘以1440 //设置单元格边距 XWPFTableCell cell0 = table.getRow(number).getCell(0); - cellPadding(cell0,fieldName); + cellPadding(cell0, fieldName); CTTblWidth ctTblWidth1 = table.getRow(number).getCell(1).getCTTc().addNewTcPr().addNewTcW(); ctTblWidth1.setType(STTblWidth.DXA); ctTblWidth1.setW(BigInteger.valueOf(6015)); //设置单元格边距 XWPFTableCell cell1 = table.getRow(number).getCell(1); - if("链接".equals(fieldName) || "Link".equals(fieldName)){ + if ("链接".equals(fieldName) || "Link".equals(fieldName)) { //设置超链接 - if(StringUtils.isNotEmpty(technologyTerritory)){ - cellLink(cell1,technologyTerritory); + if (StringUtils.isNotEmpty(technologyTerritory)) { + cellLink(cell1, technologyTerritory); } - }else{ - if("适用范围".equals(fieldName) || "状态".equals(fieldName) || "用法".equals(fieldName) - || "Scope".equals(fieldName) || "Status".equals(fieldName) || "Usage".equals(fieldName)){ - threeSet(cell1,technologyTerritory,fieldName,sysDictItems,code); - }else{ - cellPadding(cell1,technologyTerritory); + } else { + if ("适用范围".equals(fieldName) || "状态".equals(fieldName) || "用法".equals(fieldName) + || "Scope".equals(fieldName) || "Status".equals(fieldName) || "Usage".equals(fieldName)) { + threeSet(cell1, technologyTerritory, fieldName, sysDictItems, code); + } else { + cellPadding(cell1, technologyTerritory); } } @@ -1108,16 +1134,16 @@ public class WordUtil { } private static String getLawsContact(List userList, String lawsContact) { - if(com.jero.modules.system.util.StringUtils.isNotBlank(lawsContact)){ + if (com.jero.modules.system.util.StringUtils.isNotBlank(lawsContact)) { List collect = userList.stream().filter(e -> lawsContact.contains(e.getId())).collect(Collectors.toList()); StringBuilder sb = new StringBuilder(); for (String s : lawsContact.split(",")) { List loginUserList = collect.stream().filter(e -> e.getId().equals(s)).collect(Collectors.toList()); - if(loginUserList.size() != 0){ - sb.append(loginUserList.get(0).getRealname()+","); + if (loginUserList.size() != 0) { + sb.append(loginUserList.get(0).getRealname() + ","); } } - if(com.jero.modules.system.util.StringUtils.isNotBlank(sb)){ + if (com.jero.modules.system.util.StringUtils.isNotBlank(sb)) { String substring = sb.substring(0, sb.length() - 1); return substring; } @@ -1128,12 +1154,13 @@ public class WordUtil { /** * 设置单元格边距 + * * @param cell */ - public static void cellPadding(XWPFTableCell cell,String text){ + public static void cellPadding(XWPFTableCell cell, String text) { //1. 设置单元格页边距 CTTc ctTc = cell.getCTTc(); - CTTcPr cttcpr =ctTc.isSetTcPr() ? ctTc.getTcPr() : ctTc.addNewTcPr(); + CTTcPr cttcpr = ctTc.isSetTcPr() ? ctTc.getTcPr() : ctTc.addNewTcPr(); CTTcMar ctTcMar = cttcpr.isSetTcMar() ? cttcpr.getTcMar() : cttcpr.addNewTcMar(); (ctTcMar.isSetLeft() ? ctTcMar.getLeft() : ctTcMar.addNewLeft()).setW(BigInteger.valueOf(119));//左边距 (ctTcMar.isSetTop() ? ctTcMar.getTop() : ctTcMar.addNewTop()).setW(BigInteger.valueOf(63));//上边距 @@ -1150,15 +1177,15 @@ public class WordUtil { //XWPFRun 设置格式 XWPFRun run = par.createRun(); //单元格内容换行 - if(StringUtils.isNotEmpty(text) && text.contains("\n")){ + if (StringUtils.isNotEmpty(text) && text.contains("\n")) { String[] split = text.split("\n"); for (int i = 0; i < split.length; i++) { run.setText(split[i]); - if(i sysDictItems,String code){ + public static void threeSet(XWPFTableCell cell, String text, String fieldName, List sysDictItems, String code) { List sysDictItemList = sysDictItems.stream().filter(e -> code.equals(e.getDictCode())).collect(Collectors.toList()); //1. 设置单元格页边距 CTTc ctTc = cell.getCTTc(); - CTTcPr cttcpr =ctTc.isSetTcPr() ? ctTc.getTcPr() : ctTc.addNewTcPr(); + CTTcPr cttcpr = ctTc.isSetTcPr() ? ctTc.getTcPr() : ctTc.addNewTcPr(); CTTcMar ctTcMar = cttcpr.isSetTcMar() ? cttcpr.getTcMar() : cttcpr.addNewTcMar(); (ctTcMar.isSetLeft() ? ctTcMar.getLeft() : ctTcMar.addNewLeft()).setW(BigInteger.valueOf(119));//左边距 (ctTcMar.isSetTop() ? ctTcMar.getTop() : ctTcMar.addNewTop()).setW(BigInteger.valueOf(63));//上边距 @@ -1188,32 +1215,32 @@ public class WordUtil { //XWPFRun 设置格式 XWPFRun run = par.createRun(); //单元格内容换行 □ ■ - if(StringUtils.isNotEmpty(text)){ + if (StringUtils.isNotEmpty(text)) { StringBuilder sb = new StringBuilder(); - if("适用范围".equals(fieldName)){ + if ("适用范围".equals(fieldName)) { String itemText = "M,N,企业,整车,系统/零部件,新车型,在产车型"; setBlank(text, run, sb, itemText); } - if("Scope".equals(fieldName)){ + if ("Scope".equals(fieldName)) { // M,N,Enterprise,Vehicle,System/Parts,New Car Model,Models In Production // M,N,Enterprise,Vehicle,System/Part ,New Type ,New Vehicle String itemText = "M,N,Enterprise,Vehicle,System/Parts,New Car Model,Models In Production"; setBlank(text, run, sb, itemText); } - if("状态".equals(fieldName)){ + if ("状态".equals(fieldName)) { String itemText = "草稿,公示稿,发布稿"; setBlank(text, run, sb, itemText); } - if("Status".equals(fieldName)){ + if ("Status".equals(fieldName)) { // Draft,Public Notice,Release String itemText = "Draft,Publicity,Final"; setBlank(text, run, sb, itemText); } - if("用法".equals(fieldName)){ + if ("用法".equals(fieldName)) { String itemText = "强制,推荐,安装需符合"; setBlank(text, run, sb, itemText); } - if("Usage".equals(fieldName)){ + if ("Usage".equals(fieldName)) { String itemText = "Mandatory,Voluntary,Mandatory if fitted"; setBlank(text, run, sb, itemText); } @@ -1227,67 +1254,67 @@ public class WordUtil { private static void setBlank(String text, XWPFRun run, StringBuilder sb, String itemText) { //用法的三个复选框 在后端get到的英文和导出的word对应不上,也就是和itemText中给定的内容对应不上 - if(text.equals("constraint")){ + if (text.equals("constraint")) { text = "Mandatory"; } - if(text.equals("recommend")){ + if (text.equals("recommend")) { text = "Voluntary"; } - if(text.equals("installation is compliant")){ + if (text.equals("installation is compliant")) { text = "Mandatory if fitted"; } - if(text.equals("Public Notice")){ + if (text.equals("Public Notice")) { text = "Publicity"; } - if(text.equals("Release")){ + if (text.equals("Release")) { text = "Final"; } for (String value : itemText.split(",")) { String blank = getBlank(value); - if(text.contains(value)){ - if(text.equals("Mandatory if fitted") && value.equals("Mandatory")){ - sb.append("□"+value+blank); - }else { + if (text.contains(value)) { + if (text.equals("Mandatory if fitted") && value.equals("Mandatory")) { + sb.append("□" + value + blank); + } else { //将错误的英文转为正确的 String value1 = scopeConvert(value); - sb.append("■"+value1+blank); + sb.append("■" + value1 + blank); } - }else{ + } else { String value1 = scopeConvert(value); - sb.append("□"+value1+blank); + sb.append("□" + value1 + blank); } } String[] split = sb.toString().split("\r\n"); for (int i = 0; i < split.length; i++) { run.setText(split[i]); - if(i