feat:自查自评检查导入实现

hangao
wangxy 3 days ago
parent ae0e1b7e82
commit 0145e8f852

@ -22,6 +22,7 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
@ -90,15 +91,17 @@ public class CheckReportController extends BaseController {
public void exportDetail(@RequestParam String checkId, HttpServletResponse response) throws IOException {
// 1. 查询主表数据
TdCheckReportDTO tdCheckReportDTO = checkReportManager.getTdCheckReportDTO(checkId);
tdCheckReportDTO.setFramework(sysAreaManager.getAreaName(tdCheckReportDTO.getFramework()));
tdCheckReportDTO.setArea(sysAreaManager.getAreaName(tdCheckReportDTO.getArea()));
List<TdCheckReportDTO> mainList = new ArrayList<>();
mainList.add(tdCheckReportDTO);
// 2. 初始化导出工具
MultiSheetExcelUtil excelUtil = new MultiSheetExcelUtil();
excelUtil.initExport(response, "主表与子表数据.xlsx");
String fileName = URLEncoder.encode(tdCheckReportDTO.getCheckId() + ".xlsx", "UTF-8");
excelUtil.initExport(response, fileName);
// 3. 导出主表数据
excelUtil.createSheet(mainList, "主表数据", TdCheckReportDTO.class);
excelUtil.createSheet(tdCheckReportDTO.getCheckTypeDTOS(), "子表数据", TdCheckTypeDTO.class);
excelUtil.createSheet(mainList, "检查信息", TdCheckReportDTO.class);
excelUtil.createSheet(tdCheckReportDTO.getCheckTypeDTOS(), "自查类信息", TdCheckTypeDTO.class);
// 5. 完成导出
excelUtil.finishExport();
}

@ -1,10 +1,7 @@
package com.ruoyi.common.utils.poi;
import com.ruoyi.common.annotation.Excel;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import javax.servlet.http.HttpServletResponse;
@ -48,6 +45,7 @@ public class MultiSheetExcelUtil {
fillDataRows(sheet, list, fields);
}
public void finishExport() throws IOException {
try {
String encodedFileName = encodeFilename(fileName);
@ -94,28 +92,6 @@ public class MultiSheetExcelUtil {
return fields;
}
private void createTitleRow(Sheet sheet, List<Object[]> fields) {
Row row = sheet.createRow(0);
for (int i = 0; i < fields.size(); i++) {
Cell cell = row.createCell(i);
cell.setCellValue((String) fields.get(i)[1]);
}
}
private <T> void fillDataRows(Sheet sheet, List<T> list, List<Object[]> fields) {
int rowNum = 1;
for (T item : list) {
Row row = sheet.createRow(rowNum++);
for (int i = 0; i < fields.size(); i++) {
Cell cell = row.createCell(i);
Object[] fieldInfo = fields.get(i);
String fieldName = (String) fieldInfo[0];
Object value = getFieldValueByName(fieldName, item);
setCellValue(cell, value);
}
}
}
private Object getFieldValueByName(String fieldName, Object obj) {
try {
Field field = obj.getClass().getDeclaredField(fieldName);
@ -144,4 +120,75 @@ public class MultiSheetExcelUtil {
}
}
/**
*
*/
private CellStyle createHeaderStyle(Workbook workbook) {
CellStyle style = workbook.createCellStyle();
// 背景色
style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
// 边框
style.setBorderTop(BorderStyle.THIN);
style.setBorderBottom(BorderStyle.THIN);
style.setBorderLeft(BorderStyle.THIN);
style.setBorderRight(BorderStyle.THIN);
// 字体
Font font = workbook.createFont();
font.setColor(IndexedColors.BLACK.getIndex());
font.setFontName("Arial");
font.setFontHeightInPoints((short) 12);
font.setBold(true);
style.setFont(font);
// 对齐方式
style.setAlignment(HorizontalAlignment.CENTER);
style.setVerticalAlignment(VerticalAlignment.CENTER);
return style;
}
/**
*
*/
private CellStyle createDataStyle(Workbook workbook) {
CellStyle style = workbook.createCellStyle();
// 设置边框
style.setBorderTop(BorderStyle.THIN);
style.setBorderBottom(BorderStyle.THIN);
style.setBorderLeft(BorderStyle.THIN);
style.setBorderRight(BorderStyle.THIN);
// 设置自动换行(可选)
style.setWrapText(true);
return style;
}
private void createTitleRow(Sheet sheet, List<Object[]> fields) {
CellStyle headerStyle = createHeaderStyle(workbook);
CellStyle dataStyle = createDataStyle(workbook); // 数据行样式(可选)
Row row = sheet.createRow(0);
for (int i = 0; i < fields.size(); i++) {
Cell cell = row.createCell(i);
cell.setCellValue((String) fields.get(i)[1]);
cell.setCellStyle(headerStyle);
// 设置列宽
sheet.setColumnWidth(i, Math.max(sheet.getColumnWidth(i), 3000));
}
}
private <T> void fillDataRows(Sheet sheet, List<T> list, List<Object[]> fields) {
CellStyle dataStyle = createDataStyle(workbook); // 应用数据行样式
int rowNum = 1;
for (T item : list) {
Row row = sheet.createRow(rowNum++);
for (int i = 0; i < fields.size(); i++) {
Cell cell = row.createCell(i);
Object[] fieldInfo = fields.get(i);
String fieldName = (String) fieldInfo[0];
Object value = getFieldValueByName(fieldName, item);
setCellValue(cell, value);
cell.setCellStyle(dataStyle); // 应用数据行样式
}
}
}
}

@ -17,6 +17,8 @@ import java.util.List;
* @TableName td_check_report
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class TdCheckReportDTO implements Serializable {
/**
* id

@ -15,6 +15,8 @@ import java.io.Serializable;
* @TableName td_check_type
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class TdCheckTypeDTO implements Serializable {
/**
*

Loading…
Cancel
Save