工程质量分析

This commit is contained in:
liang.chao 2025-07-24 13:34:00 +08:00
parent 18c589b1fc
commit 4549e29f23
2 changed files with 59 additions and 8 deletions

View File

@ -9,6 +9,10 @@ import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Base64;
import org.apache.commons.io.FileUtils; 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.beans.factory.annotation.Value;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;

View File

@ -1,26 +1,27 @@
package com.securitycontrol.screen.controller; 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.controller.BaseController;
import com.securitycontrol.common.core.web.domain.AjaxResult; import com.securitycontrol.common.core.web.domain.AjaxResult;
import com.securitycontrol.common.core.web.page.TableDataInfo; 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.dto.ScreenParamDto;
import com.securitycontrol.entity.screen.vo.AccessMgeVo;
import com.securitycontrol.entity.screen.vo.DataAnalysisDetailVo; import com.securitycontrol.entity.screen.vo.DataAnalysisDetailVo;
import com.securitycontrol.entity.screen.vo.ProjectQualityVo; import com.securitycontrol.entity.screen.vo.ProjectQualityVo;
import com.securitycontrol.screen.service.DataAnalysisService; import com.securitycontrol.screen.service.DataAnalysisService;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping; import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.springframework.web.bind.annotation.RequestMapping; import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.springframework.web.bind.annotation.RestController; 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 javax.annotation.Resource;
import java.io.ByteArrayInputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @className:DataAnalysisController * @className:DataAnalysisController
@ -79,4 +80,50 @@ public class DataAnalysisController extends BaseController {
} }
return AjaxResult.success(list); return AjaxResult.success(list);
} }
@PostMapping("uploadProQuality")
public Map<String, List<List<String>>> extractTablesFromWord(@RequestParam("file") MultipartFile file) {
Map<String, List<List<String>>> 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<XWPFTable> tables = document.getTables();
for (int i = 0; i < tables.size(); i++) {
XWPFTable table = tables.get(i);
List<List<String>> tableData = new ArrayList<>();
// 处理每一行
for (XWPFTableRow row : table.getRows()) {
List<String> 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;
}
} }