diff --git a/securitycontrol-model/securitycontrol-files/src/main/java/com/securitycontrol/files/controller/FileUploadController.java b/securitycontrol-model/securitycontrol-files/src/main/java/com/securitycontrol/files/controller/FileUploadController.java index 6768dd9..3e46587 100644 --- a/securitycontrol-model/securitycontrol-files/src/main/java/com/securitycontrol/files/controller/FileUploadController.java +++ b/securitycontrol-model/securitycontrol-files/src/main/java/com/securitycontrol/files/controller/FileUploadController.java @@ -9,6 +9,10 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; import org.apache.commons.io.FileUtils; +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.apache.poi.xwpf.usermodel.XWPFTable; +import org.apache.poi.xwpf.usermodel.XWPFTableCell; +import org.apache.poi.xwpf.usermodel.XWPFTableRow; import org.springframework.beans.factory.annotation.Value; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/DataAnalysisController.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/DataAnalysisController.java index 0f5d80b..7ee172f 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/DataAnalysisController.java +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/DataAnalysisController.java @@ -1,26 +1,27 @@ package com.securitycontrol.screen.controller; -import com.securitycontrol.common.core.utils.aes.StringHelper; import com.securitycontrol.common.core.web.controller.BaseController; import com.securitycontrol.common.core.web.domain.AjaxResult; import com.securitycontrol.common.core.web.page.TableDataInfo; -import com.securitycontrol.common.log.annotation.Log; -import com.securitycontrol.common.log.enums.OperationType; -import com.securitycontrol.entity.screen.dto.AccessMgeDto; import com.securitycontrol.entity.screen.dto.ScreenParamDto; -import com.securitycontrol.entity.screen.vo.AccessMgeVo; import com.securitycontrol.entity.screen.vo.DataAnalysisDetailVo; import com.securitycontrol.entity.screen.vo.ProjectQualityVo; import com.securitycontrol.screen.service.DataAnalysisService; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.apache.poi.xwpf.usermodel.XWPFTable; +import org.apache.poi.xwpf.usermodel.XWPFTableCell; +import org.apache.poi.xwpf.usermodel.XWPFTableRow; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import java.io.ByteArrayInputStream; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * @className:DataAnalysisController @@ -79,4 +80,50 @@ public class DataAnalysisController extends BaseController { } return AjaxResult.success(list); } + + @PostMapping("uploadProQuality") + public Map>> extractTablesFromWord(@RequestParam("file") MultipartFile file) { + Map>> result = new HashMap<>(); + + try { + // 验证文件类型 + if (!file.getOriginalFilename().endsWith(".docx")) { + throw new IllegalArgumentException("仅支持.docx格式的文件"); + } + + // 将文件内容读取到字节数组 + byte[] fileBytes = file.getBytes(); + + // 从字节数组创建输入流 + try (ByteArrayInputStream bis = new ByteArrayInputStream(fileBytes); + XWPFDocument document = new XWPFDocument(bis)) { + + // 提取所有表格 + List tables = document.getTables(); + + for (int i = 0; i < tables.size(); i++) { + XWPFTable table = tables.get(i); + List> tableData = new ArrayList<>(); + + // 处理每一行 + for (XWPFTableRow row : table.getRows()) { + List rowData = new ArrayList<>(); + + // 处理每个单元格 + for (XWPFTableCell cell : row.getTableCells()) { + rowData.add(cell.getText()); + } + + tableData.add(rowData); + } + + result.put("表格" + (i + 1), tableData); + } + } + } catch (Exception e) { + throw new RuntimeException("处理Word文档时出错: " + e.getMessage(), e); + } + + return result; + } }