From 9a98121231685145fdc0f78ac2d48d02e0eb68d6 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期三, 03 七月 2024 22:22:00 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardTreeServiceImpl.java |  133 +++++++++++++++++++++++++++++++++
 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 +
 inspect-server/src/main/java/com/yuanchu/mom/service/StandardTreeService.java          |    2 
 cnas-server/src/main/java/com/yuanchu/mom/controller/CapacityScopeController.java      |   17 ++++
 inspect-server/src/main/java/com/yuanchu/mom/controller/StandardTreeController.java    |   15 ++-
 cnas-server/src/main/java/com/yuanchu/mom/excel/StructureTestObjectListener.java       |   38 +++++++++
 cnas-server/src/main/java/com/yuanchu/mom/service/ProductService.java                  |    3 
 8 files changed, 234 insertions(+), 6 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);
+    }
 }
 
 
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/controller/StandardTreeController.java b/inspect-server/src/main/java/com/yuanchu/mom/controller/StandardTreeController.java
index 82511d8..aa41a21 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/controller/StandardTreeController.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/controller/StandardTreeController.java
@@ -11,7 +11,10 @@
 import com.yuanchu.mom.service.StandardProductListService;
 import com.yuanchu.mom.service.StandardTreeService;
 import com.yuanchu.mom.vo.Result;
-import io.swagger.annotations.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -168,9 +171,13 @@
 
     @ValueClassify("鏍囧噯搴�")
     @ApiOperation("瀵煎叆鏍囧噯搴�")
-    @PostMapping("/inExcelOfTree")
-    public Result inExcelOfTree(@RequestParam("file") MultipartFile file) {
-        standardTreeService.inExcelOfTree(file);
+    @PostMapping("/inExcelOfTree/{isEquipment}")
+    public Result inExcelOfTree(@RequestParam("file") MultipartFile file, @PathVariable("isEquipment") Boolean isEquipment) {
+        if (!isEquipment) {
+            standardTreeService.inExcelOfTree(file);
+        } else {
+            standardTreeService.importWorkstationExcel(file);
+        }
         return Result.success();
     }
 
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/StandardTreeService.java b/inspect-server/src/main/java/com/yuanchu/mom/service/StandardTreeService.java
index 44d3be4..8496f6a 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/StandardTreeService.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/StandardTreeService.java
@@ -37,4 +37,6 @@
     void resetTreeOfHour(String tree, Integer standardId);
 
     void resetTreeOfAsk(String tree, Integer standardId);
+
+    void importWorkstationExcel(MultipartFile file);
 }
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardTreeServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardTreeServiceImpl.java
index 353d6ac..8a3deb0 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardTreeServiceImpl.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardTreeServiceImpl.java
@@ -1,6 +1,5 @@
 package com.yuanchu.mom.service.impl;
 
-import cn.hutool.core.lang.Console;
 import cn.hutool.poi.excel.ExcelUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -159,6 +158,10 @@
                 .select(StandardTree::getModel, StandardTree::getSample));
     }
 
+    /**
+     * 娌冲彛妫�娴嬩腑蹇冨鍏�
+     * @param file
+     */
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void inExcelOfTree(MultipartFile file) {
@@ -286,6 +289,134 @@
     }
 
     @Override
+    public void importWorkstationExcel(MultipartFile file) {
+        InputStream inputStream;
+        try {
+            inputStream = file.getInputStream();
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        List<StandardProductList> lists = new ArrayList<>();
+        AtomicReference<String> laboratory = new AtomicReference<>();
+        ExcelUtil.readBySax(inputStream, 0, (i, l, list) -> {
+            StandardProductList str = new StandardProductList();
+            if (i == 0 && l == 1) {
+                laboratory.set(standardTreeMapper.getLaboratory(list.get(1) + ""));
+                if (laboratory.get() == null) {
+                    throw new ErrorException("妫�楠屽璞′笉瀛樺湪锛�" + list.get(1));
+                }
+            }
+            if (i == 0 && l >= 1) {
+                Integer standardMethodId = standardMethodListService.getStandardMethodId(list.get(0) + "");
+                if (standardMethodId == null) {
+                    throw new ErrorException("鏍囧噯缂栧彿涓嶅瓨鍦細" + list.get(0));
+                }
+                str.setStandardMethodListId(standardMethodId);
+                str.setSampleType(list.get(1) + "");
+                if (list.get(2) != null) {
+                    String sample = baseMapper.selSample(list.get(2) + "");
+                    if (sample == null) {
+                        throw new ErrorException("鏍峰搧涓嶅瓨鍦細" + list.get(2));
+                    }
+                    str.setSample(list.get(2) + "");
+                } else {
+                    str.setSample(null);
+                }
+                if (list.get(3) != null) {
+                    str.setModel(list.get(3) + "");
+                    Long aLong = standardTreeMapper.selectCount(Wrappers.<StandardTree>lambdaQuery()
+                            .eq(StandardTree::getModel, str.getModel())
+                            .eq(StandardTree::getSampleType, list.get(1) + ""));
+                    if (aLong == 0) {
+                        StandardTree standardTree = new StandardTree();
+                        standardTree.setFactory("涓ぉ绉戞妧妫�娴嬩腑蹇�");
+                        standardTree.setLaboratory(laboratory.get());
+                        standardTree.setSampleType(str.getSampleType());
+                        standardTree.setSample(str.getSample());
+                        standardTree.setModel(str.getModel());
+                        standardTreeMapper.insert(standardTree);
+                    }
+                } else {
+                    str.setModel(null);
+                }
+                str.setInspectionItemClass(list.get(4).toString());
+                str.setInspectionItemClassEn(list.get(5).toString());
+                // 寮�濮嬪姞2
+                str.setInspectionItem(list.get(6) + "");
+                if (list.get(8) == null) {
+                    str.setInspectionItemSubclass("");
+                } else {
+                    str.setInspectionItemSubclass(list.get(8).toString());
+                }
+                StandardProductList db_str;
+                try {
+                    db_str = standardProductListMapper.getOne(str.getStandardMethodListId(), str.getInspectionItem(), str.getSample(), str.getInspectionItemSubclass(), str.getModel());
+                } catch (Exception e) {
+                    throw new ErrorException("閲嶅鏌ヨ锛�" + str.getInspectionItem() + " " + str.getInspectionItemSubclass());
+                }
+                if (ObjectUtils.isNotEmpty(db_str)) {
+                    str.setId(db_str.getId());
+                    str.setStructureItemParameterId(db_str.getStructureItemParameterId());
+                }
+                if (list.get(10) != null) {
+                    str.setMethodS(list.get(10) + "");
+                }
+
+                if (list.get(13) == null) {
+                    str.setTell(null);
+                } else {
+                    str.setTell(list.get(13).toString());
+                }
+
+                if (list.get(14) == null) {
+                    str.setAsk(null);
+                } else {
+                    str.setAsk(list.get(14).toString());
+                }
+
+                if (list.get(15) == null) {
+                    str.setPrice(null);
+                } else {
+                    str.setPrice((list.get(15).toString()));
+                }
+
+                if (list.get(16) == null) {
+                    str.setManHour(null);
+                } else {
+                    str.setManHour(list.get(16).toString());
+                }
+
+                StandardTemplate standTempIdByName = standardTemplateService.getStandTempIdByName(String.valueOf(list.get(23)));
+                if (standTempIdByName != null) {
+                    str.setTemplateId(standTempIdByName.getId());
+                } else {
+                    throw new ErrorException("妯℃澘涓嶅瓨鍦細" + list.get(23));
+                }
+                str.setFactory("涓ぉ绉戞妧妫�娴嬩腑蹇�");
+                str.setLaboratory(laboratory.get());
+                str.setState(1);
+                str.setTree(str.getFactory() + " - " + str.getLaboratory() + " - " + str.getSampleType() + " - " + str.getSample() + " - " + (str.getModel() == null ? "" : str.getModel()));
+                try {
+                    str.setStructureItemParameterId(standardTreeMapper.getStructureItemParameterId("\"" + str.getSampleType() + "\"", str.getInspectionItem(), str.getInspectionItemSubclass()));
+                } catch (Exception e) {
+                    str.setStructureItemParameterId(standardTreeMapper.getStructureItemParameterId("\"" + str.getSampleType() + "\",\"" + str.getSample() + "\"", str.getInspectionItem(), str.getInspectionItemSubclass()));
+                }
+                if (str.getStructureItemParameterId() == null) {
+                    throw new ErrorException("妫�楠岄」鐩笉瀛樺湪锛�" + str.getInspectionItem() + " " + str.getInspectionItemSubclass());
+                }
+                lists.add(str);
+            }
+        });
+        lists.forEach(a -> {
+            if (a.getId() != null) {
+                standardProductListMapper.updateById(a);
+            } else {
+                standardProductListMapper.insert(a);
+            }
+        });
+    }
+
+    @Override
     public void resetTreeOfPrice(String tree, Integer standardId) {
         standardProductListMapper.update(null, Wrappers.<StandardProductList>lambdaUpdate().like(StandardProductList::getTree, tree).eq(StandardProductList::getStandardMethodListId, standardId).set(StandardProductList::getPrice, null));
     }

--
Gitblit v1.9.3