修改文档对比-添加对比结果导出Excel

This commit is contained in:
gaosong
2022-08-09 01:42:33 +08:00
parent b40602cad9
commit 6307e1ef28
@@ -11,17 +11,20 @@ import com.jero.modules.compare.service.ISarFileCompareInfoService;
import com.jero.modules.compare.service.ISarFileCompareItemCommentService;
import com.jero.modules.compare.service.ISarFileCompareItemService;
import com.jero.modules.system.util.StringUtils;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -169,6 +172,20 @@ public class SarFileCompareItemCommentServiceImpl extends ServiceImpl<SarFileCom
@Override
public void exportResXls(Map<String, Object> map, HttpServletResponse response, HttpServletRequest request) {
String cut = (String) map.get("cut");
//是否包含评论
String includeComments = (String) map.get("includeComments");
String infoId = (String) map.get("infoId");
String selectIds = (String) map.get("selectIds");
LambdaQueryWrapper<SarFileCompareItemComment> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SarFileCompareItemComment::getInfoId, infoId);
if (!StringUtils.isEmpty(selectIds)) {
queryWrapper.in(SarFileCompareItemComment::getId, Arrays.asList(selectIds.split(",")));
}
queryWrapper.orderBy(true, true, SarFileCompareItemComment::getCreateTime);
List<SarFileCompareItemComment> list = this.list(queryWrapper);
Map<String, SarFileCompareItem> sfcItemMap = SarFileCompareItemServiceImpl.queryMapByInfoId(infoId);
OutputStream os = null;
Workbook workbook = new XSSFWorkbook();
try {
@@ -177,11 +194,70 @@ public class SarFileCompareItemCommentServiceImpl extends ServiceImpl<SarFileCom
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
response.setContentType("application/force-download");
//创建工作表对象
Sheet sheet = workbook.createSheet();
// 创建头部
//String header = StringUtils.join(headerFieldList, ",");
Sheet sheet = workbook.createSheet("对比结果");
// 创建头部
String header = "";
if (CutEnum.CN.getValue().equals(cut)) {
header = "条款号,条款名称,条款内容,条款号,条款名称,条款内容,评论";
} else {
header = "Number,Title,Content,Number,Title,Content,Comment";
}
CellStyle cellStyle = workbook.createCellStyle();//初始化单元格格式对象
cellStyle.setAlignment(HorizontalAlignment.CENTER);
cellStyle.setWrapText(true);
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]);
}
}
int i = 1;
for (SarFileCompareItemComment itemComment : list) {
Row row = sheet.createRow(i);
String itemIdLeft = itemComment.getItemsIdLeft();
if (!StringUtils.isEmpty(itemIdLeft)) {
SarFileCompareItem itemLeft = sfcItemMap.get(itemIdLeft);
if (null != itemLeft) {
row.createCell(0).setCellValue(itemLeft.getItemsNum());
row.createCell(1).setCellValue(itemLeft.getItemsName());
String text = itemLeft.getItemsText();
text = text.replace("<p>", "").replace("</p>", "\r\n");
row.createCell(2).setCellValue(text);
}
}
String itemIdRight = itemComment.getItemsIdRight();
SarFileCompareItem itemRight = sfcItemMap.get(itemIdRight);
if (null != itemRight) {
row.createCell(3).setCellValue(itemRight.getItemsNum());
row.createCell(4).setCellValue(itemRight.getItemsName());
String text = itemRight.getItemsText();
text = text.replace("<p>", "").replace("</p>", "\r\n");
row.createCell(5).setCellValue(text);
}
row.createCell(6).setCellValue(itemComment.getComment());
i++;
}
if (!StringUtils.isEmpty(includeComments) && includeComments.equals("1")) {
Row row = sheet.createRow(i);
if (CutEnum.CN.getValue().equals(cut)) {
row.createCell(0).setCellValue("全文评论");
} else {
row.createCell(0).setCellValue("The full text comments");
}
//合并单元格
CellRangeAddress rangeAddress = new CellRangeAddress(row.getRowNum(), row.getRowNum(), 1, 6);
sheet.addMergedRegion(rangeAddress);
SarFileCompareInfo compareInfo = sarFileCompareInfoServiceImpl.queryById(infoId);
row.createCell(1).setCellValue(compareInfo.getComments());
}
for (int j = 0; j < 7; j++) {
sheet.autoSizeColumn(j, true);//设置列宽
}
os = response.getOutputStream();
// File file = new File("C://work/ee.xlsx");
// os = new FileOutputStream(file);
workbook.write(os);
os.flush();
} catch (IOException e) {