From 6b33a25627312d22d5bca5fd28f2335c6432ffaa Mon Sep 17 00:00:00 2001 From: funny <834502597@qq.com> Date: Mon, 13 Apr 2026 17:51:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../QmsInspectionItemController.java | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsInspectionItemController.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsInspectionItemController.java index 2280cb3e..89b2fafa 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsInspectionItemController.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsInspectionItemController.java @@ -2,6 +2,7 @@ package com.nflg.qms.admin.controller; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; import com.nflg.wms.common.constant.STATE; import com.nflg.wms.common.exception.NflgException; import com.nflg.wms.common.pojo.ApiResult; @@ -28,9 +29,12 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.ttzero.excel.entity.ListSheet; import org.ttzero.excel.entity.Workbook; +import org.ttzero.excel.reader.Drawings; +import org.ttzero.excel.reader.ExcelReader; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; +import java.io.FileInputStream; import java.io.IOException; import java.time.LocalDate; import java.util.List; @@ -175,12 +179,39 @@ public class QmsInspectionItemController extends BaseController { */ @Transactional @PostMapping("import") - public ApiResult importFromExcel(@RequestParam("file") MultipartFile file) throws IOException { + public ApiResult importFromExcel(@RequestParam("file") MultipartFile file) throws Exception { List data = EecExcelUtil.getExcelContext(file.getInputStream(), QmsInspectionItemImportDTO.class); if (CollectionUtil.isEmpty(data)) { throw new NflgException(STATE.BusinessError, "导入文件内容为空"); } + + // 2. 读取 Excel 里的所有图片(EEC 标准方式) + List pictures = new ExcelReader(file.getInputStream()).listPictures(); + + // 3. 遍历 DTO,遇到 DISPIMG 就上传图片并替换地址 + for (int i = 0; i < data.size(); i++) { + QmsInspectionItemImportDTO dto = data.get(i); + String legend = dto.getLegend(); + + // 如果是图片公式,就取图片上传,把地址填回去 + if (StrUtil.isNotBlank(legend) && legend.startsWith("=DISPIMG(")) { + if (i < pictures.size()) { + Drawings.Picture pic = pictures.get(i); + FileInputStream fis = new FileInputStream(pic.getLocalPath().toFile()); + // 上传图片 → 获取地址 + String imageUrl = fileUploadService.upload( + "image/" + IdUtil.fastUUID() + ".png", + fis, + "image/png" + ); + dto.setLegend(imageUrl); // 把地址塞回去 + } else { + dto.setLegend(null); + } + } + } + // 校验必填字段 boolean hasError = false; for (QmsInspectionItemImportDTO dto : data) {