月报导出--适用范围,状态,用法

This commit is contained in:
zhn
2022-09-28 23:15:02 +08:00
parent 17d47525fe
commit d0b93b1b7a
4 changed files with 348 additions and 23 deletions
@@ -0,0 +1,53 @@
package com.jero.modules.report.enums;
/**
* @description
* @date 2022/1/21 15:22
* @auth zhn
*/
public enum ScopeEnum {
M("M","M","1"),
N("N","N","2"),
COMPANY("企业","","3"),
WHOLE_CAR("整车","","4"),
SYSTEM_PARTS("系统/零部件","","5"),
NEW_CAR("新车型","","6"),
PRODUCTION_CAR("在产车型","","7");
String nameCn;
String nameEn;
String value;
private ScopeEnum(String nameCn,String nameEn, String value) {
this.nameCn = nameCn;
this.nameEn = nameEn;
this.value = value;
}
public String getNameCn() {
return nameCn;
}
public void setNameCn(String nameCn) {
this.nameCn = nameCn;
}
public String getNameEn() {
return nameEn;
}
public void setNameEn(String nameEn) {
this.nameEn = nameEn;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
@@ -0,0 +1,40 @@
package com.jero.modules.report.enums;
/**
* @description
* @date 2022/1/21 15:22
* @auth zhn
*/
public enum StateEnum {
DRAFT("草稿","1"),
PUBLICITY("公示稿","2"),
ISSUE("发布稿","3");
String name;
String value;
private StateEnum(String name, String value) {
this.name = name;
this.value = value;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
@@ -0,0 +1,40 @@
package com.jero.modules.report.enums;
/**
* @description
* @date 2022/1/21 15:22
* @auth zhn
*/
public enum UsageEnum {
FORCE("强制","1"),
RECOMMEND("推荐","2"),
INSTALLATION_REQUIREMENTS("安装需符合","3");
String name;
String value;
private UsageEnum(String name, String value) {
this.name = name;
this.value = value;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
@@ -496,7 +496,7 @@ public class WordUtil {
String stateName = dictItem(sysDictItems, state,cut, DictCodeReportEnum.STATE.getValue());
String useMethodName = dictItem(sysDictItems, useMethod,cut, DictCodeReportEnum.USEMETHOD.getValue());
XWPFTable table = document.createTable(12, 2);
XWPFTable table = document.createTable(11, 2);
//表格属性
CTTblPr tablePr = table.getCTTbl().addNewTblPr();
//固定列宽(英文和数字的时候自动换行)
@@ -518,52 +518,52 @@ public class WordUtil {
//第1行
setCell(table, 0, "相关领域",technologyTerritoryName);
//第2行
setCell(table,1, "适用车型",applyCarName);
// setCell(table,1, "适用车型",applyCarName);
//第3行
setCell(table,2, "适用范围",applyScopeName);
setCellThree(table,1, "适用范围",applyScopeName,sysDictItems,DictCodeReportEnum.APPLYSCOPE.getValue());
//第4行
setCell(table,3, "状态",stateName);
setCellThree(table,2, "状态",stateName,sysDictItems,DictCodeReportEnum.STATE.getValue());
//第5行
setCell(table,4, "用法",useMethodName);
setCellThree(table,3, "用法",useMethodName,sysDictItems,DictCodeReportEnum.USEMETHOD.getValue());
//第6行
setCell(table,5, "实施车型",implementCar);
setCell(table,4, "实施车型",implementCar);
//第7行
setCell(table,6, "新车型实施日期",newCarImplementTime);
setCell(table,5, "新车型实施日期",newCarImplementTime);
//第8行
setCell(table,7, "在产车实施日期",productionCarImplementTime);
setCell(table,6, "在产车实施日期",productionCarImplementTime);
//第9行
setCell(table,8, "主要内容",contentCn);
setCell(table,7, "主要内容",contentCn);
//第10行
setCell(table,9, "NIO工作进展",workProgressCn);
setCell(table,8, "NIO工作进展",workProgressCn);
//第11行
setCell(table,10, "法规联系人",lawsContact);
setCell(table,9, "法规联系人",lawsContact);
//第12行
setCell(table,11, "链接",link);
setCell(table,10, "链接",link);
}else{
//第1行
setCell(table,0, "Related Areas",technologyTerritoryName);
//第2行
setCell(table,1,"Vehicle Type",applyCarName);
// setCell(table,1,"Vehicle Type",applyCarName);
//第3行
setCell(table,2,"Scope",applyScopeName);
setCellThree(table,1,"Scope",applyScopeName,sysDictItems,DictCodeReportEnum.APPLYSCOPE.getValue());
//第4行
setCell(table,3,"Status",stateName);
setCellThree(table,2,"Status",stateName,sysDictItems,DictCodeReportEnum.APPLYSCOPE.getValue());
//第5行
setCell(table,4,"usage",useMethodName);
setCellThree(table,3,"Usage",useMethodName,sysDictItems,DictCodeReportEnum.APPLYSCOPE.getValue());
//第6行
setCell(table,5,"Implementation Model",implementCar);
setCell(table,4,"Implementation Model",implementCar);
//第7行
setCell(table,6,"New Type Execution Date",newCarImplementTime);
setCell(table,5,"New Type Execution Date",newCarImplementTime);
//第8行
setCell(table,7,"New Vehicle Execution Date",productionCarImplementTime);
setCell(table,6,"New Vehicle Execution Date",productionCarImplementTime);
//第9行
setCell(table,8,"Main Content",contentEn);
setCell(table,7,"Main Content",contentEn);
//第10行
setCell(table,9,"NIO Work Progress",workProgressEn);
setCell(table,8,"NIO Work Progress",workProgressEn);
//第11行
setCell(table, 10,"Regulatory Contact",lawsContact);
setCell(table,9,"Regulatory Contact",lawsContact);
//第12行
setCell(table, 11,"Link",link);
setCell(table, 10,"Link",link);
}
// ctTblLayoutType.setType(STTblLayoutType.FIXED);
@@ -964,6 +964,7 @@ public class WordUtil {
//设置单元格边距
XWPFTableCell cell0 = table.getRow(number).getCell(0);
cellPadding(cell0,fieldName);
CTTblWidth ctTblWidth1 = table.getRow(number).getCell(1).getCTTc().addNewTcPr().addNewTcW();
ctTblWidth1.setType(STTblWidth.DXA);
ctTblWidth1.setW(BigInteger.valueOf(6015));
@@ -978,6 +979,43 @@ public class WordUtil {
cellPadding(cell1,technologyTerritory);
}
// XWPFParagraph para = table.getRow(number).getCell(1).getParagraphs().get(0);
// XWPFRun run = para.createRun();//对某个段落设置格式
// run.addBreak();//换行
//
// table.getRow(number).getCell(0).setText(fieldName);
// table.getRow(number).getCell(1).setText(technologyTerritory);
}
private static void setCellThree(XWPFTable table, int number, String fieldName,String technologyTerritory,
List<SysDictItem> 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);
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(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);
}
}
// XWPFParagraph para = table.getRow(number).getCell(1).getParagraphs().get(0);
// XWPFRun run = para.createRun();//对某个段落设置格式
// run.addBreak();//换行
@@ -1046,6 +1084,160 @@ public class WordUtil {
}
//适用范围,状态,用法三个字段单独处理
public static void threeSet(XWPFTableCell cell,String text,String fieldName,List<SysDictItem> sysDictItems,String code){
List<SysDictItem> 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();
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));//上边距
//2. 设置文本及文本的字体
//获取 CTP
CTP ctP = (ctTc.sizeOfPArray() == 0) ?
ctTc.addNewP() : ctTc.getPArray(0);
//getParagraph(ctP) 获取 XWPFParagraph
XWPFParagraph par = cell.getParagraph(ctP);
//XWPFRun 设置格式
XWPFRun run = par.createRun();
//单元格内容换行 □ ■
if(StringUtils.isNotEmpty(text)){
StringBuilder sb = new StringBuilder();
if("适用范围".equals(fieldName)){
String itemText = "M,N,企业,整车,系统/零部件,新车型,在产车型";
setBlank(text, run, sb, itemText);
}
if("Scope".equals(fieldName)){
String itemText = "M,N,Enterprise,Vehicle,System/Parts,New Car Model,Models In Production";
setBlank(text, run, sb, itemText);
}
if("状态".equals(fieldName)){
String itemText = "草稿,公示稿,发布稿";
setBlank(text, run, sb, itemText);
}
if("Status".equals(fieldName)){
String itemText = "Draft,Public Notice,Release";
setBlank(text, run, sb, itemText);
}
if("用法".equals(fieldName)){
String itemText = "强制,推荐,安装需符合";
setBlank(text, run, sb, itemText);
}
if("Usage".equals(fieldName)){
String itemText = "Constraint,Recommend,Installation Is Compliant";
setBlank(text, run, sb, itemText);
}
}
//设置字体样式,大小
run.setFontSize(10);
run.setFontFamily("Blue Sky Noto Regular");
}
private static void setBlank(String text, XWPFRun run, StringBuilder sb, String itemText) {
for (String value : itemText.split(",")) {
String blank = getBlank(value);
if(text.contains(value)){
sb.append(""+value+blank);
}else{
sb.append(""+value+blank);
}
}
String[] split = sb.toString().split("\r\n");
for (int i = 0; i < split.length; i++) {
run.setText(split[i]);
if(i<split.length-1){
run.addBreak();
}
}
}
public static String getBlank(String value){
String blank = "";
switch (value) {
case "M":
blank = " ";
break;
case "N":
blank = "\r\n";
break;
case "企业":
blank = " ";
break;
case "整车":
blank = " ";
break;
case "系统/零部件":
blank = "\r\n";
break;
case "新车型":
blank = " ";
break;
case "在产车型`":
blank = "";
break;
case "Enterprise":
blank = " ";
break;
case "Vehicle":
blank = " ";
break;
case "System/Parts":
blank = "\r\n";
break;
case "New Car Model":
blank = " ";
break;
case "Models In Production":
blank = "";
break;
case "草稿":
blank = " ";
break;
case "公示稿":
blank = " ";
break;
case "发布稿":
blank = "";
break;
case "Draft":
blank = " ";
break;
case "Public Notice":
blank = " ";
break;
case "Release":
blank = "";
break;
case "强制":
blank = " ";
break;
case "推荐":
blank = " ";
break;
case "安装需符合":
blank = "";
break;
case "Constraint":
blank = " ";
break;
case "Recommend":
blank = " ";
break;
case "Installation Is Compliant":
blank = "";
break;
default:
break;
}
return blank;
}
/**
* 设置页边距,字体样式,超链接
* @param cell