月报导出--适用范围,状态,用法
This commit is contained in:
+53
@@ -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;
|
||||
}
|
||||
}
|
||||
+40
@@ -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;
|
||||
}
|
||||
}
|
||||
+40
@@ -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;
|
||||
}
|
||||
}
|
||||
+215
-23
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user