feat: There is no way the

This commit is contained in:
super_liu
2021-08-24 09:57:11 +08:00
parent 4a11cd9c9b
commit 6084f51bae
10 changed files with 645 additions and 25 deletions
@@ -0,0 +1,144 @@
package com.adc.da.utils.util;
import com.adc.da.slrs.sarBussionessStand.entity.SarBussionessStand;
import com.adc.da.slrs.sarStandAttrDetails.entity.SarStandAttrDetails;
import org.apache.commons.lang.StringUtils;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Description: 标准导出工具
* @Author: yangxuenan
* date: 2020/9/16 14:09
*/
public class BussStandExportUtil {
private static final Logger logger = LoggerFactory.getLogger(BussStandExportUtil.class);
public static Workbook exportDatas (List<SarBussionessStand> datas) {
Workbook workbook = new XSSFWorkbook();
try {
StringBuilder attrBud = new StringBuilder();
List<SarStandAttrDetails> detailsEOList = InitStandAttrUtil.bussAttrFieldList;
Map<String,String> attrInfoMap = new HashMap<>();
for (SarStandAttrDetails detailsEO : detailsEOList) {
if (!InitStandAttrUtil.fileFieldListBuss.contains(detailsEO.getAttrField())) {
attrBud.append(detailsEO.getAttrName() + ",");
attrInfoMap.put(detailsEO.getAttrName(),detailsEO.getAttrField());
}
}
String header = FieldConvertUtil.exportBaseFieldNamesBuss + "," + attrBud.toString();
//创建工作表对象
Sheet sheet = workbook.createSheet();
// 创建头部
createHeader(workbook,sheet,header);
// 创建数据
createDatas(workbook,sheet,datas,header,attrInfoMap);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
return workbook;
}
public static void createHeader(Workbook workbook,Sheet sheet,String header){
CellStyle cellStyle = workbook.createCellStyle();//初始化单元格格式对象
cellStyle.setAlignment(HorizontalAlignment.CENTER);
Row rowHeader = sheet.createRow(0);//开始创建标题行
if (StringUtils.isNotBlank(header)) {
String[] headerArr = header.split(",");
for (int i=0;i < headerArr.length; i++) {
rowHeader.createCell(i).setCellValue(headerArr[i]);
// rowHeader.createCell(i).setCellStyle(cellStyle);
}
}
}
public static void createDatas(Workbook workbook,Sheet sheet,List<SarBussionessStand> datas,
String header,Map<String,String> attrInfoMap) throws Exception{
CellStyle cellStyle = workbook.createCellStyle();//初始化单元格格式对象
cellStyle.setAlignment(HorizontalAlignment.CENTER);
if (datas != null && !datas.isEmpty()) {
for (int i=0;i < datas.size(); i++) {
SarBussionessStand sarStandardsInfoEO = datas.get(i);
Row row = sheet.createRow(i+1);
String[] headerArr = header.split(",");
int sheetNum = 0;
for (String headerName : headerArr) {
String value = getValueByName(headerName,sarStandardsInfoEO,attrInfoMap);
if (StringUtils.isBlank(value) || "null".equals(value)) {
value = "";
}
row.createCell(sheetNum).setCellValue(value);
sheetNum++;
}
}
}
}
// 根据表头返回相应值
public static String getValueByName (String name,SarBussionessStand sarStandardsInfoEO,Map<String,String> attrInfoMap) throws Exception{
String value = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Map<String,Object> attrValueMap = sarStandardsInfoEO.getAttrInfoMap();
switch (name) {
case "企标类别":
value = sarStandardsInfoEO.getStandSortShow();
break;
case "企标编号":
value = sarStandardsInfoEO.getStandCode();
break;
case "中文名称":
value = sarStandardsInfoEO.getStandName();
break;
case "英文名称":
value = sarStandardsInfoEO.getStandEnName();
break;
case "标准状态":
value = sarStandardsInfoEO.getStandStatusShow();
break;
case "标准实施日期":
if (sarStandardsInfoEO.getPutTime() != null) {
String issueTime = sdf.format(sarStandardsInfoEO.getPutTime());
value = issueTime;
}
break;
case "代替企标编号":
value = sarStandardsInfoEO.getReplaceStandNum();
break;
case "被代替企标编号":
value = sarStandardsInfoEO.getReplacedStandNum();
break;
case "发布日期":
if (sarStandardsInfoEO.getIssueTime() != null) {
String issueTime = sdf.format(sarStandardsInfoEO.getIssueTime());
value = issueTime;
}
break;
case "复审日期":
String field1 = attrInfoMap.get(name);
if (attrValueMap != null) {
value = String.valueOf(attrValueMap.get(field1));
if (value.length()>10){
value = value.substring(0,10);
}
}
break;
default:
String field = attrInfoMap.get(name);
if (attrValueMap != null) {
value = String.valueOf(attrValueMap.get(field));
}
break;
}
return value;
}
}