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

通过标本编号批量导入模型

jiafei 3 тижнів тому
батько
коміт
771fbf3f84

+ 11 - 0
yudao-module-museum/yudao-module-museum-biz/src/main/java/cn/iocoder/yudao/module/museum/controller/admin/museummodel/MuseumModelController.java

@@ -16,6 +16,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
@@ -100,6 +101,16 @@ public class MuseumModelController {
     return success(BeanUtils.toBean(pageResult,MuseummodelRespVO.class));
     }
 
+    @PostMapping("/batch-import")
+    @Operation(summary = "通过标本编号批量导入模型")
+    public CommonResult<Boolean> batchImportModels(@RequestParam("specimenNumber") String specimenNumber, @RequestParam("zipFile") MultipartFile zipFile) {
+        if (!zipFile.getOriginalFilename().endsWith(".zip")) {
+            return CommonResult.error(200, "请上传后缀为.zip的文件");
+        }
+        museumModelService.batchImportModels(specimenNumber, zipFile);
+        return CommonResult.success(true);
+    }
+
 
 
 //1.通过标本编号放回所有的标本模型list

+ 14 - 4
yudao-module-museum/yudao-module-museum-biz/src/main/java/cn/iocoder/yudao/module/museum/dal/mysql/museummodel/MuseummodelMapper.java

@@ -6,10 +6,7 @@ import cn.iocoder.yudao.module.museum.controller.admin.museummodel.vo.Museummode
 import cn.iocoder.yudao.module.museum.dal.database.museuminfo.MuseumInfoDO;
 import cn.iocoder.yudao.module.museum.dal.database.museummodel.MuseummodelDO;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.annotations.Select;
-import org.apache.ibatis.annotations.Update;
+import org.apache.ibatis.annotations.*;
 
 import java.util.List;
 
@@ -37,6 +34,19 @@ public interface MuseummodelMapper extends BaseMapperX<MuseummodelDO> {
     @Select("SELECT * FROM museum_specimen_model WHERE specimen_type =#{specimenType} AND deleted =0")
     List<MuseummodelDO> getMuseumModelBySpecimenType(@Param("specimenType") String specimenType);
 
+    /**
+     * 通过标本编号批量导入模型
+     * */
+    @Insert({
+            "<script>",
+            "INSERT INTO museum_specimen_model (model_name, specimen_number, model_way) VALUES ",
+            "<foreach collection='list' item='item' separator=','>",
+            "(#{item.modelName}, #{item.specimenNumber}, #{item.modelWay})",
+            "</foreach>",
+            "</script>"
+    })
+//    void batchInsert(@Param("list") List<MuseummodelDO> museummodelDOList);
+
     //分页查询
     default PageResult<MuseummodelDO> getMuseumModelPage(MuseummodelPageReqVO reqVO) {
         MPJLambdaWrapper<MuseummodelDO> mpjLambdaWrapper = new MPJLambdaWrapper<>();

+ 7 - 2
yudao-module-museum/yudao-module-museum-biz/src/main/java/cn/iocoder/yudao/module/museum/service/museummodel/MuseummodelService.java

@@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.museum.dal.database.museuminfo.MuseumInfoDO;
 import cn.iocoder.yudao.module.museum.dal.database.museummodel.MuseummodelDO;
 import cn.iocoder.yudao.module.museum.controller.admin.museummodel.vo.MuseummodelPageReqVO;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
 
@@ -27,6 +28,12 @@ public interface MuseummodelService {
     * */
    void deleteMuseumModel(Integer id);
 
+   /**
+    * 通过标本编号批量导入模型
+    * */
+   void batchImportModels(String specimenNumber, MultipartFile zipFile);
+
+
 
    /**
     * 查询标本
@@ -51,6 +58,4 @@ public interface MuseummodelService {
     */
    PageResult<MuseummodelDO> getMuseumModelPage(MuseummodelPageReqVO pageReqVO);
 
-
-
 }

+ 49 - 1
yudao-module-museum/yudao-module-museum-biz/src/main/java/cn/iocoder/yudao/module/museum/service/museummodel/MuseummodelServiceImpl.java

@@ -9,10 +9,15 @@ import cn.iocoder.yudao.module.museum.dal.mysql.museummodel.MuseummodelMapper;
 import cn.iocoder.yudao.module.museum.controller.admin.museummodel.vo.MuseummodelPageReqVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import java.io.IOException;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
 
 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.singleton;
 
@@ -35,9 +40,14 @@ public  class MuseummodelServiceImpl implements MuseummodelService {
 
    @Override
    public void deleteMuseumModel(Integer id){
-//      museumModelMapper.deleteMuseumModel(id);
+     museumModelMapper.deleteMuseumModel(id);
       museumModelMapper.deleteById(id);
    }
+//废料
+   @Override
+   public void batchImportModels(String specimenNumber, MultipartFile zipFile) {
+
+   }
 
    @Override
    public MuseummodelDO selectMuseumModel(Integer id){
@@ -63,6 +73,44 @@ public  class MuseummodelServiceImpl implements MuseummodelService {
       // 修改为正确的方法调用
       return museumModelMapper.getMuseumModelBySpecimenType(specimenType);
    }
+//
+//   @Override
+//   public void batchImportModels(String specimenNumber, MultipartFile zipFile) {
+//      try {
+//         // 处理zip文件,解析并保存模型信息
+//         byte[] bytes = zipFile.getBytes();
+//         // 这里需要根据具体需求实现zip文件解析和模型信息保存逻辑
+//      } catch (IOException e) {
+//         e.printStackTrace();
+//      }
+//   }
+//
+//   正在写
+//   @Override
+//   public void batchImportModels(String specimenNumber, MultipartFile zipFile) {
+//      List<MuseummodelDO> museummodelDOList = new ArrayList<>();
+//      try (ZipInputStream zis = new ZipInputStream(zipFile.getInputStream())) {
+//         ZipEntry zipEntry;
+//         while ((zipEntry = zis.getNextEntry()) != null) {
+//            if (!zipEntry.isDirectory()) {
+//               // 这里需要根据 zip 文件中的具体内容解析出模型信息
+//               // 示例:假设文件名就是模型名称,这里仅为示例,实际需根据情况调整
+//               String modelName = zipEntry.getName();
+//               MuseummodelDO museummodelDO = new MuseummodelDO();
+//               museummodelDO.setModelName(modelName);
+//               museummodelDO.setSpecimenNumber(specimenNumber);
+//               // 假设模型路径暂时用文件名替代,实际需根据存储情况调整
+//               museummodelDO.setModelWay(modelName);
+//               museummodelDOList.add(museummodelDO);
+//            }
+//         }
+//         if (!museummodelDOList.isEmpty()) {
+//            MuseummodelMapper.batchInsert(museummodelDOList);
+//         }
+//      } catch (IOException e) {
+//         e.printStackTrace();
+//      }
+//   }
 
 //     @Override
 //      public  PageResult<MuseummodelDO> getPage (MuseummodelPageReqVO pageReqVO){