Переглянути джерело

一个标本对应多个图片2.0

hyy 7 місяців тому
батько
коміт
f7e983ced7

+ 43 - 52
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimeninfo/SpecimenInfoController.java

@@ -117,6 +117,7 @@ public class SpecimenInfoController {
         List<SpecimenImportExcelVO> list = Arrays.asList(
                 SpecimenImportExcelVO.builder()
                         .specimenNumber("SM001")
+//                        .specimenType("矿物") // 矿物
                         .specimenType(0) // 矿物
                         .assetNumber("A001")
                         .storageLocation("博物馆A")
@@ -130,17 +131,21 @@ public class SpecimenInfoController {
                         .internationalName("Mineral A")
                         .discoveryTime("2024-01-01") // 使用 LocalDateTime
                         .fallTime("2024-01-02")
-                        .preservationType(0) // 标本
+//                        .preservationType("标本") // 标本
+                        .preservationType(0)
                         .size("10cm")
                         .weight(new BigDecimal("1.5"))
-                        .source(0) // 采购
+//                        .source("采购") // 采购
+                        .source(0)
                         .provider("供应商A")
                         .acquisitionTime("2024-01-03")
                         .purpose("研究")
                         .description("这是一个矿石标本")
                         .notes("备注信息")
-                        .imageName("image1.jpg")
-                        .imagePath("/images/image1.jpg")
+                        .imageName("image1.jpg,image3.jpg,image3.jpg")
+                        .specimenPrice(new BigDecimal("100.01"))
+                        .specimenAmount(20)
+                        .collectionStatus(0)
                         .build()
         );
         ExcelUtils.write(response, "标本导入模板.xls", "标本信息", SpecimenImportExcelVO.class, list);
@@ -160,64 +165,50 @@ public class SpecimenInfoController {
         return success(specimenInfoService.importSpecimenList(list, updateSupport));
     }
 
-        @PostMapping("/import-specimen-images")
-        @Operation(summary = "导入标本图片")
-        @Parameters({
-                @Parameter(name = "file", description = "压缩包文件", required = true)
-        })
-        @PreAuthorize("@ss.hasPermission('museums:specimen-info:import-images')")
-        public CommonResult<String> importSpecimenImages(@RequestParam("file") MultipartFile file) throws Exception {
-            // 解压文件并处理图片
-    //        return success(specimenInfoService.importSpecimenImages(file));
-            String result = specimenInfoService.importSpecimenImages(file);
-
-            // 确保返回的数据不为 null
-            if (result == null) {
-                throw exception(INVALID_IMAGE_FORMAT);
-            }
-            return success(result);
+    @PostMapping("/import-specimen-images")
+    @Operation(summary = "导入标本图片")
+    @Parameters({
+            @Parameter(name = "file", description = "压缩包文件", required = true)
+    })
+    @PreAuthorize("@ss.hasPermission('museums:specimen-info:import-images')")
+    public CommonResult<String> importSpecimenImages(@RequestParam("file") MultipartFile file) throws Exception {
+        // 解压文件并处理图片
+        String result = specimenInfoService.importSpecimenImages(file);
+        // 确保返回的数据不为 null
+        if (result == null) {
+            throw exception(INVALID_IMAGE_FORMAT);
         }
+        return success(result);
+    }
 
-
-//    @PostMapping("/import-specimen-data")
-//    @Operation(summary = "导入标本及其图片")
-//    @Parameters({
-//            @Parameter(name = "excelFile", description = "Excel 文件", required = true),
-//            @Parameter(name = "imageFile", description = "压缩包文件", required = true),
-//            @Parameter(name = "updateSupport", description = "是否支持更新,默认为 false", example = "true")
-//    })
-//    @PreAuthorize("@ss.hasPermission('museums:specimen-info:import')")
-//    public CommonResult<String> importSpecimenData(@RequestParam("excelFile") MultipartFile excelFile,
-//                                                   @RequestParam("imageFile") MultipartFile imageFile,
-//                                                   @RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport) {
-//        try {
-//            specimenInfoService.importSpecimenData(excelFile, imageFile, updateSupport);
-//            return CommonResult.success("标本及图片导入成功");
-//        } catch (Exception e) {
-//            return CommonResult.error(500, "导入过程中发生错误: " + e.getMessage());
-//        }
-//    }
-
-    @PostMapping("/import-specimen-data")
+    @PostMapping("/import-specimen-with-images")
     @Operation(summary = "导入标本及其图片")
     @Parameters({
-            @Parameter(name = "excelFile", description = "Excel 文件", required = true),
+            @Parameter(name = "file", description = "Excel 文件", required = true),
             @Parameter(name = "imageFile", description = "压缩包文件", required = true),
             @Parameter(name = "updateSupport", description = "是否支持更新,默认为 false", example = "true")
     })
     @PreAuthorize("@ss.hasPermission('museums:specimen-info:import')")
-    public CommonResult<String> importSpecimenData(@RequestParam("excelFile") MultipartFile excelFile,
-                                                   @RequestParam("imageFile") MultipartFile imageFile,
-                                                   @RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport) {
-        try {
-            specimenInfoService.importSpecimenData(excelFile, imageFile, updateSupport);
-            return CommonResult.success("标本及图片导入成功");
-        } catch (Exception e) {
-            return CommonResult.error(500, "导入过程中发生错误: " + e.getMessage());
+    public CommonResult<SpecimenImportRespVO> importSpecimenWithImages(
+            @RequestParam("file") MultipartFile file,
+            @RequestParam("imageFile") MultipartFile imageFile,
+            @RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport) throws Exception {
+
+        // 读取 Excel 文件中的标本数据
+        List<SpecimenImportExcelVO> specimenList = ExcelUtils.read(file, SpecimenImportExcelVO.class);
+
+        // 处理标本的导入
+        SpecimenImportRespVO importResult = specimenInfoService.importSpecimenList(specimenList, updateSupport);
+
+        // 处理标本图片的导入
+        String imageResult = specimenInfoService.importSpecimenImages(imageFile);
+        // 确保返回的数据不为 null
+        if (imageResult == null) {
+            throw exception(INVALID_IMAGE_FORMAT);
         }
-    }
-
 
+        return success(importResult);
+    }
 
     //工作台
     //根据入库的登记情况统计本年标本入库信息。

+ 36 - 26
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/controller/admin/specimeninfo/vo/SpecimenImportExcelVO.java

@@ -16,28 +16,38 @@ import java.math.BigDecimal;
 @Accessors(chain = false) // 设置 chain = false,避免用户导入有问题
 public class SpecimenImportExcelVO {
 
-    @ExcelProperty("标本类型(矿物0、岩石矿石1、化石3、陨石4)")
-    private Integer specimenType;
-
     @ExcelProperty("标本编号")
     private String specimenNumber;
 
     @ExcelProperty("资产号")
     private String assetNumber;
 
+    @ExcelProperty("标本名称(中文)")
+    private String chineseName;
+
+    @ExcelProperty("标本名称(英文)")
+    private String englishName;
+
+    @ExcelProperty("标本类型(矿物/矿石/岩石/化石/陨石)")
+//    private String specimenType;
+    private Integer specimenType;
+
     @ExcelProperty("存放位置")
     private String storageLocation;
 
-    @ExcelProperty("中文名称")
-    private String chineseName;
+    @ExcelProperty("标本数量")
+    private Integer specimenAmount;
 
-    @ExcelProperty("英文名称")
-    private String englishName;
+    @ExcelProperty("尺寸")
+    private String size;
+
+    @ExcelProperty("重量")
+    private BigDecimal weight;
 
-    @ExcelProperty("成分")
+    @ExcelProperty("成分/化学式")
     private String composition;
 
-    @ExcelProperty("产地")
+    @ExcelProperty("产地/发现地")
     private String origin;
 
     @ExcelProperty("时代")
@@ -46,35 +56,34 @@ public class SpecimenImportExcelVO {
     @ExcelProperty("保存地层")
     private String preservedLayer;
 
-    @ExcelProperty("陨石类型")
+    @ExcelProperty("保存类型(原石、光片、薄片、切片、模型及其他等)")
+//    private String preservationType;
+    private Integer preservationType;
+
+    @ExcelProperty("分类(矿物的类型/岩石的类型/陨石的类型)")
     private String meteoriteType;
 
     @ExcelProperty("国际命名")
     private String internationalName;
 
     @ExcelProperty("发现时间")
-    private String discoveryTime; // 或者使用 LocalDate
+    private String discoveryTime;
 
     @ExcelProperty("降落时间")
-    private String fallTime; // 或者使用 LocalDate
-
-    @ExcelProperty("保存类型(标本0、光片1、薄片模型3、其他4)")
-    private Integer preservationType;
-
-    @ExcelProperty("尺寸")
-    private String size;
-
-    @ExcelProperty("重量")
-    private BigDecimal weight;
+    private String fallTime;
 
-    @ExcelProperty("来源(采购0、捐赠1、采集3、其他4)")
+    @ExcelProperty("来源(采购、捐赠、采集等)")
+//    private String source;
     private Integer source;
 
     @ExcelProperty("标本提供者")
     private String provider;
 
+    @ExcelProperty("标本价格")
+    private BigDecimal specimenPrice;
+
     @ExcelProperty("入藏时间")
-    private String acquisitionTime; // 或者使用 LocalDate
+    private String acquisitionTime;
 
     @ExcelProperty("用途")
     private String purpose;
@@ -82,12 +91,13 @@ public class SpecimenImportExcelVO {
     @ExcelProperty("描述")
     private String description;
 
+    @ExcelProperty("馆藏状态(在馆/展陈/借出)")
+//    private String collectionStatus;
+    private Integer collectionStatus;
+
     @ExcelProperty("备注")
     private String notes;
 
     @ExcelProperty("图片名称")
     private String imageName;
-
-    @ExcelProperty("图片路径")
-    private String imagePath;
 }

+ 8 - 3
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/dal/dataobject/specimeninfo/SpecimenInfoDO.java

@@ -136,9 +136,6 @@ public class SpecimenInfoDO extends BaseDO {
      * 图片路径
      */
     private String imagePath;
-//    private List<String> imagePath;
-//    List<String> imagePath;
-//    private String[] imagePath;
     /**
      * 入库操作员
      */
@@ -163,6 +160,14 @@ public class SpecimenInfoDO extends BaseDO {
      * 注销原因
      */
     private String deletedReason;
+    /**
+     * 标本数量
+     */
+    private String specimenAmount;
+    /**
+     * 标本价格
+     */
+    private BigDecimal specimenPrice;
 
     /**
      * 新加的

+ 0 - 15
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/service/specimeninfo/SpecimenInfoService.java

@@ -5,8 +5,6 @@ import javax.validation.*;
 import cn.iocoder.yudao.module.museums.controller.admin.specimeninfo.vo.*;
 import cn.iocoder.yudao.module.museums.dal.dataobject.specimeninfo.SpecimenInfoDO;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.museums.dal.dataobject.specimenoutbound.SpecimenOutboundDO;
-import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
 /**
@@ -71,16 +69,7 @@ public interface SpecimenInfoService {
      */
     String importSpecimenImages(MultipartFile file) throws Exception;
 
-    void importSpecimenData(MultipartFile excelFile, MultipartFile imageFile, boolean updateSupport) throws Exception;
-
     //工作台
-//    /**
-//     * 统计本年标本入库信息
-//     *
-//     * @param year 年份
-//     * @return 标本入库信息列表
-//     */
-//    List<SpecimenInfoDO> getEntryStatistics(int year);
     /**
      * 统计本年标本每月入库数量
      *
@@ -101,21 +90,17 @@ public interface SpecimenInfoService {
      * @return 各类标本的库存数量统计
      */
      List<Map<String, Object>> getAllSpecimenTypeStatistics();
-
     /**
      * 根据出、回、入库登记统计标本历年增减情况
      *
      * @return 年份与标本统计信息的映射
      */
-//    Map<Integer, Map<String, Integer>> getYearlySpecimenStatistics();
-
     Map <String, Object> getYearlySpecimenStatistics();
     /**
      * 根据标本来源统计历年标本登记情况
      *
      * @return 年份与标本来源统计信息的映射
      */
-//    Map<Integer, Map<String, Integer>> getYearlySpecimenSourceStatistics();
     List<Map<String, Object>> getYearlySpecimenSourceStatistics();
 
 

+ 1 - 236
yudao-module-museums/yudao-module-museums-biz/src/main/java/cn/iocoder/yudao/module/museums/service/specimeninfo/SpecimenInfoServiceImpl.java

@@ -99,7 +99,7 @@ public class SpecimenInfoServiceImpl implements SpecimenInfoService {
     @Override
     @Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
     public SpecimenImportRespVO importSpecimenList(List<SpecimenImportExcelVO> importSpecimens, boolean isUpdateSupport) {
-// 1.1 参数校验
+        // 1.1 参数校验
         if (CollUtil.isEmpty(importSpecimens)) {
             throw exception(SPECIMEN_INFO_LIST_IS_EMPTY);
         }
@@ -145,225 +145,6 @@ public class SpecimenInfoServiceImpl implements SpecimenInfoService {
 
         return respVO;
     }
-//    private boolean isValidImageName(String imageName) {
-//        return imageName != null && imageName.matches(".*\\.(jpg|jpeg|png|gif)$"); // 检查格式
-//    }
-//
-//    @Override
-//    @Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
-//    public String importSpecimenImages(MultipartFile file) throws Exception {
-//        // 校验文件类型
-//        if (!file.getOriginalFilename().endsWith(".zip")) {
-//            throw exception(UPLOADED_FOLDER_CANNOT_EMPTY);
-//        }
-//        // 创建临时目录存放解压后的文件
-//        File tempDir = Files.createTempDirectory("specimen_images").toFile();
-//        try (ZipInputStream zipInputStream = new ZipInputStream(file.getInputStream())) {
-//            ZipEntry entry;
-//            while ((entry = zipInputStream.getNextEntry()) != null) {
-//                if (!entry.isDirectory()) {
-//                    File newFile = new File(tempDir, entry.getName());
-//                    // 进行解压
-//                    try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFile))) {
-//                        byte[] buffer = new byte[1024];
-//                        int len;
-//                        while ((len = zipInputStream.read(buffer)) > 0) {
-//                            bos.write(buffer, 0, len);
-//                        }
-//                    }
-//                }
-//            }
-//        }
-//        // 处理每个图片文件
-//        File[] imageFiles = tempDir.listFiles();
-//        if (imageFiles != null) {
-//            for (File imageFile : imageFiles) {
-//                String imageName = imageFile.getName();
-//                if (!isValidImageName(imageName)) {
-//                    // 如果不符合格式,抛出异常或记录日志
-//                    System.err.println("无效的图片格式: " + imageName);
-//                    continue; // 或者 throw new Exception("无效的图片格式: " + imageName);
-//                }
-//                // 根据图片名称查找对应的标本
-//                SpecimenInfoDO specimenInfo = specimenInfoMapper.selectByImageName(imageName);
-//                if (specimenInfo != null) {
-//                    // 上传图片并获取URL
-//                    String imagePath = fileApi.createFile(Files.readAllBytes(imageFile.toPath()));
-//                    // 更新标本信息中的图片路径
-//                    specimenInfo.setImagePath(imagePath);
-//                    specimenInfoMapper.updateById(specimenInfo);
-//                }
-//            }
-//        }
-//
-//        // 清理临时文件
-//        FileUtils.deleteDirectory(tempDir);
-//        return "标本图片导入成功";
-//    }
-//
-//    @Override
-//    @Transactional(rollbackFor = Exception.class) // 事务管理
-//    public void importSpecimenData(MultipartFile excelFile, MultipartFile imageFile, boolean updateSupport) throws Exception {
-//        // 1. 导入标本
-//        List<SpecimenImportExcelVO> list = ExcelUtils.read(excelFile, SpecimenImportExcelVO.class);
-//        SpecimenImportRespVO importRespVO = importSpecimenList(list, updateSupport);
-//
-//        // 2. 导入图片
-//        String imageImportResult = importSpecimenImages(imageFile);
-//
-//        // 可以根据需要记录导入结果
-//        System.out.println("标本导入结果: " + importRespVO);
-//        System.out.println("标本图片导入结果: " + imageImportResult);
-//    }
-
-    //测试
-//    @Override
-//    @Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
-//    public SpecimenImportRespVO importSpecimenList(List<SpecimenImportExcelVO> importSpecimens, boolean isUpdateSupport) {
-//        // 1.1 参数校验
-//        if (CollUtil.isEmpty(importSpecimens)) {
-//            throw exception(SPECIMEN_INFO_LIST_IS_EMPTY);
-//        }
-//
-//        // 2. 遍历,逐个创建或更新
-//        SpecimenImportRespVO respVO = SpecimenImportRespVO.builder()
-//                .createSpecimenNumbers(new ArrayList<>())
-//                .updateSpecimenNumbers(new ArrayList<>())
-//                .failureSpecimenNumbers(new LinkedHashMap<>()).build();
-//
-//        importSpecimens.forEach(importSpecimen -> {
-//            // 校验逻辑可以根据需要添加
-//
-//            // 2.1. 判断是否存在
-//            SpecimenInfoDO existSpecimen = specimenInfoMapper.selectBySpecimenNumber(importSpecimen.getSpecimenNumber());
-//
-//            // 1. 校验图片名格式
-//            String[] imageNames = importSpecimen.getImageName().split(","); // 处理多个图片名
-//            boolean validImageNames = Arrays.stream(imageNames).allMatch(this::isValidImageName);
-//
-//            if (!validImageNames) {
-//                respVO.getFailureSpecimenNumbers().put(importSpecimen.getSpecimenNumber(), "图片名称格式不正确");
-//                return;
-//            }
-//
-//            if (existSpecimen == null) {
-//                // 2.2.1 不存在则插入
-//                SpecimenInfoDO newSpecimen = BeanUtils.toBean(importSpecimen, SpecimenInfoDO.class);
-//                newSpecimen.setImagePath(""); // 初始化为空
-//                specimenInfoMapper.insert(newSpecimen);
-//                respVO.getCreateSpecimenNumbers().add(importSpecimen.getSpecimenNumber());
-//                return;
-//            }
-//
-//            // 2.2.2 如果存在,判断是否允许更新
-//            // 如果需要支持更新,取消注释以下代码
-////        if (!isUpdateSupport) {
-////            respVO.getFailureSpecimenNumbers().put(importSpecimen.getSpecimenNumber(), "标本编号已存在,且不支持更新");
-////            return;
-////        }
-//
-//            // 更新逻辑
-//            SpecimenInfoDO updateSpecimen = BeanUtils.toBean(importSpecimen, SpecimenInfoDO.class);
-//            updateSpecimen.setId(existSpecimen.getId()); // 设置 ID 进行更新
-//            specimenInfoMapper.updateById(updateSpecimen);
-//            respVO.getUpdateSpecimenNumbers().add(importSpecimen.getSpecimenNumber());
-//        });
-//
-//        return respVO;
-//    }
-//
-//
-//    // 检查多个图片名称格式
-//    private boolean isValidImageName(String imageNames) {
-//        if (imageNames == null) return false;
-//        String[] names = imageNames.split(",");
-//        for (String name : names) {
-//            if (!name.matches(".*\\.(jpg|jpeg|png|gif)$")) {
-//                return false; // 只要有一个格式不正确就返回 false
-//            }
-//        }
-//        return true;
-//    }
-//
-//    // 导入图片的逻辑
-//    @Override
-//    @Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
-//    public String importSpecimenImages(MultipartFile file) throws Exception {
-//        // 校验文件类型
-//        if (!file.getOriginalFilename().endsWith(".zip")) {
-//            throw exception(UPLOADED_FOLDER_CANNOT_EMPTY);
-//        }
-//        // 创建临时目录存放解压后的文件
-//        File tempDir = Files.createTempDirectory("specimen_images").toFile();
-//        try (ZipInputStream zipInputStream = new ZipInputStream(file.getInputStream())) {
-//            ZipEntry entry;
-//            while ((entry = zipInputStream.getNextEntry()) != null) {
-//                if (!entry.isDirectory()) {
-//                    File newFile = new File(tempDir, entry.getName());
-//                    // 进行解压
-//                    try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFile))) {
-//                        byte[] buffer = new byte[1024];
-//                        int len;
-//                        while ((len = zipInputStream.read(buffer)) > 0) {
-//                            bos.write(buffer, 0, len);
-//                        }
-//                    }
-//                }
-//            }
-//        }
-//
-//        // 处理每个图片文件
-//        File[] imageFiles = tempDir.listFiles();
-//        if (imageFiles != null) {
-//            for (File imageFile : imageFiles) {
-//                String imageName = imageFile.getName();
-//                if (!isValidImageName(imageName)) {
-//                    // 如果不符合格式,抛出异常或记录日志
-//                    System.err.println("无效的图片格式: " + imageName);
-//                    continue;
-//                }
-//
-//                // 根据图片名称查找对应的标本
-//                List<SpecimenInfoDO> specimenInfoList = (List<SpecimenInfoDO>) specimenInfoMapper.selectByImageName(imageName);
-//                for (SpecimenInfoDO specimenInfo : specimenInfoList) {
-//                    // 上传图片并获取URL
-//                    String imagePath = fileApi.createFile(Files.readAllBytes(imageFile.toPath()));
-//
-//                    // 更新标本信息中的图片路径
-//                    String currentImagePaths = specimenInfo.getImagePath();
-//                    if (currentImagePaths == null || currentImagePaths.isEmpty()) {
-//                        specimenInfo.setImagePath(imagePath); // 第一次设置
-//                    } else {
-//                        specimenInfo.setImagePath(currentImagePaths + "," + imagePath); // 追加到已有路径
-//                    }
-//                    specimenInfoMapper.updateById(specimenInfo);
-//                }
-//            }
-//        }
-//
-//        // 清理临时文件
-//        FileUtils.deleteDirectory(tempDir);
-//        return "标本图片导入成功";
-//    }
-//
-//
-//
-//    // 主导入逻辑
-//    @Override
-//    @Transactional(rollbackFor = Exception.class) // 事务管理
-//    public void importSpecimenData(MultipartFile excelFile, MultipartFile imageFile, boolean updateSupport) throws Exception {
-//        // 1. 导入标本
-//        List<SpecimenImportExcelVO> list = ExcelUtils.read(excelFile, SpecimenImportExcelVO.class);
-//        SpecimenImportRespVO importRespVO = importSpecimenList(list, updateSupport);
-//
-//        // 2. 导入图片
-//        String imageImportResult = importSpecimenImages(imageFile);
-//
-//        // 可以根据需要记录导入结果
-//        System.out.println("标本导入结果: " + importRespVO);
-//        System.out.println("标本图片导入结果: " + imageImportResult);
-//    }
-
     //测试成功
     private boolean isValidImageName(String imageNames) {
         if (imageNames == null) return false;
@@ -442,22 +223,6 @@ public class SpecimenInfoServiceImpl implements SpecimenInfoService {
         return "标本图片导入成功";
     }
 
-    @Override
-    @Transactional(rollbackFor = Exception.class) // 事务管理
-    public void importSpecimenData(MultipartFile excelFile, MultipartFile imageFile, boolean updateSupport) throws Exception {
-        // 1. 导入标本
-        List<SpecimenImportExcelVO> list = ExcelUtils.read(excelFile, SpecimenImportExcelVO.class);
-        SpecimenImportRespVO importRespVO = importSpecimenList(list, updateSupport);
-
-        // 2. 导入图片
-        String imageImportResult = importSpecimenImages(imageFile);
-
-        // 可以根据需要记录导入结果
-        System.out.println("标本导入结果: " + importRespVO);
-        System.out.println("标本图片导入结果: " + imageImportResult);
-    }
-
-
     //工作台
     //根据入库的登记情况统计本年标本入库信息
     @Override