From fcfbaa84f1fef87a958452ef83d82e140d8ddb59 Mon Sep 17 00:00:00 2001
From: Crunchy <3114200645@qq.com>
Date: 星期三, 03 七月 2024 17:58:09 +0800
Subject: [PATCH] 2024-7-3 检验对象导入 40%

---
 cnas-server/src/main/java/com/yuanchu/mom/excel/StructureTestObjectData.java      |   25 ++++++++++++
 cnas-server/src/main/java/com/yuanchu/mom/service/impl/ProductServiceImpl.java    |    7 +++
 cnas-server/src/main/java/com/yuanchu/mom/controller/CapacityScopeController.java |   17 ++++++++
 cnas-server/src/main/java/com/yuanchu/mom/excel/StructureTestObjectListener.java  |   38 +++++++++++++++++++
 cnas-server/src/main/java/com/yuanchu/mom/service/ProductService.java             |    3 +
 5 files changed, 89 insertions(+), 1 deletions(-)

diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/CapacityScopeController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/CapacityScopeController.java
index 7be141e..4020ab9 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/controller/CapacityScopeController.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/CapacityScopeController.java
@@ -2,12 +2,15 @@
 
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.poi.excel.ExcelUtil;
+import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.util.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yuanchu.mom.annotation.ValueAuth;
 import com.yuanchu.mom.annotation.ValueClassify;
 import com.yuanchu.mom.dto.PageTestObjectDto;
+import com.yuanchu.mom.excel.StructureTestObjectData;
+import com.yuanchu.mom.excel.StructureTestObjectListener;
 import com.yuanchu.mom.exception.ErrorException;
 import com.yuanchu.mom.pojo.*;
 import com.yuanchu.mom.service.*;
@@ -22,8 +25,8 @@
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.io.IOException;
 import java.io.InputStream;
-import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -367,4 +370,16 @@
         }
         return Result.success();
     }
+
+    @ValueClassify(value = "鑳藉姏鑼冨洿")
+    @ApiOperation(value = "瀵煎叆妫�楠屽璞�")
+    @PostMapping("/importExcel")
+    public Result importExcel(@RequestParam("file") MultipartFile file) {
+        try {
+            EasyExcel.read(file.getInputStream(), StructureTestObjectData.class, new StructureTestObjectListener(productService)).sheet().doRead();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return Result.success();
+    }
 }
\ No newline at end of file
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/excel/StructureTestObjectData.java b/cnas-server/src/main/java/com/yuanchu/mom/excel/StructureTestObjectData.java
new file mode 100644
index 0000000..b891531
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/excel/StructureTestObjectData.java
@@ -0,0 +1,25 @@
+package com.yuanchu.mom.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+@Data
+public class StructureTestObjectData {
+    @ExcelProperty(value = "鍦烘墍")
+    private String laboratoryId;
+
+    @ExcelProperty(value = "妫�楠屽璞�")
+    private String specimenName;
+
+    @ExcelProperty(value = "妫�楠屽璞�(EN)")
+    private String specimenNameEn;
+
+    @ExcelProperty(value = "瀵硅薄浠e彿")
+    private String code;
+
+    @ExcelProperty(value = "浜у搧鍚嶇О")
+    private String name;
+
+    @ExcelProperty(value = "浜у搧鍚嶇О(EN)")
+    private String nameEn;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/excel/StructureTestObjectListener.java b/cnas-server/src/main/java/com/yuanchu/mom/excel/StructureTestObjectListener.java
new file mode 100644
index 0000000..b83665d
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/excel/StructureTestObjectListener.java
@@ -0,0 +1,38 @@
+package com.yuanchu.mom.excel;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.yuanchu.mom.service.ProductService;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class StructureTestObjectListener extends AnalysisEventListener<StructureTestObjectData> {
+    private static final int BATCH_COUNT = 1000;
+    List<StructureTestObjectData> list = new ArrayList<>();
+
+    private ProductService productService;
+
+    public StructureTestObjectListener(ProductService productService) {
+        this.productService = productService;
+    }
+
+    @Override
+    public void invoke(StructureTestObjectData data, AnalysisContext analysisContext) {
+        list.add(data);
+        if (list.size() >= BATCH_COUNT) {
+            save();
+            list.clear();
+        }
+    }
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+        save();
+    }
+
+
+    private void save() {
+        productService.importPartExcel(list);
+    }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/ProductService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/ProductService.java
index a654735..21d7695 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/service/ProductService.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/ProductService.java
@@ -2,8 +2,10 @@
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.excel.StructureTestObjectData;
 import com.yuanchu.mom.pojo.Product;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -21,4 +23,5 @@
 
     int delProduct(Integer id);
 
+    void importPartExcel(List<StructureTestObjectData> list);
 }
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/ProductServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/ProductServiceImpl.java
index 6949320..37e6f93 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/ProductServiceImpl.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/ProductServiceImpl.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yuanchu.mom.common.GetLook;
 import com.yuanchu.mom.common.PrintChina;
+import com.yuanchu.mom.excel.StructureTestObjectData;
 import com.yuanchu.mom.mapper.ProductMapper;
 import com.yuanchu.mom.pojo.Product;
 import com.yuanchu.mom.service.ProductService;
@@ -12,6 +13,7 @@
 import org.springframework.stereotype.Service;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -52,6 +54,11 @@
     public int delProduct(Integer id) {
         return productMapper.deleteById(id);
     }
+
+    @Override
+    public void importPartExcel(List<StructureTestObjectData> list) {
+        System.out.println(list);
+    }
 }
 
 

--
Gitblit v1.9.3