From 34ddd63acb70ad5b0fe218e4f4e7afb4d195d8f8 Mon Sep 17 00:00:00 2001
From: 晏有为 <13214124+yan-youwei@user.noreply.gitee.com>
Date: 星期四, 23 五月 2024 19:04:59 +0800
Subject: [PATCH] 导入检验对象

---
 cnas-server/src/main/java/com/yuanchu/mom/controller/CapacityScopeController.java |  246 +++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 228 insertions(+), 18 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 5f2fc15..bb3b20a 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
@@ -1,22 +1,43 @@
 package com.yuanchu.mom.controller;
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.lang.Console;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.json.JSONUtil;
+import cn.hutool.poi.excel.ExcelReader;
+import cn.hutool.poi.excel.ExcelUtil;
+import cn.hutool.poi.excel.sax.handler.RowHandler;
+import com.alibaba.excel.util.StringUtils;
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+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.pojo.Product;
-import com.yuanchu.mom.pojo.StructureItemParameter;
-import com.yuanchu.mom.pojo.StructureTestObject;
-import com.yuanchu.mom.service.CapacityScopeService;
-import com.yuanchu.mom.service.ProductService;
+import com.yuanchu.mom.pojo.*;
+import com.yuanchu.mom.service.*;
 import com.yuanchu.mom.utils.JackSonUtil;
 import com.yuanchu.mom.vo.Result;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
-import java.util.Map;
+import java.io.IOException;
+import java.io.InputStream;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
+import java.util.*;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
 
 /**
  * 妫�楠岄」鐩弬鏁�(StructureItemParameter)琛ㄦ帶鍒跺眰
@@ -34,6 +55,10 @@
 
     private ProductService productService;
 
+    private StructureItemParameterService structureItemParameterService;
+
+    private StandardTemplateService standardTemplateService;
+
     @ValueClassify("鑳藉姏鑼冨洿")
     @ApiOperation(value = "鑾峰彇椤圭洰妫�楠屽弬鏁板垪琛�")
     @PostMapping("/selectItemParameterList")
@@ -42,25 +67,29 @@
         StructureItemParameter itemParameter = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), StructureItemParameter.class);
         return Result.success(capacityScopeService.selectItemParameterList(page, itemParameter));
     }
+
     @ValueClassify("鑳藉姏鑼冨洿")
     @ApiOperation(value = "娣诲姞椤圭洰妫�楠屽弬鏁�")
     @PostMapping("/addItemParameter")
     public Result addItemParameter(@RequestBody StructureItemParameter itemParameter) {
         return Result.success(capacityScopeService.addItemParameter(itemParameter));
     }
-    @ValueClassify(value="鑳藉姏鑼冨洿")
+
+    @ValueClassify(value = "鑳藉姏鑼冨洿")
     @ApiOperation(value = "鍒犻櫎椤圭洰妫�楠屽弬鏁�")
     @PostMapping("/delItemParameter")
     public Result<?> delItemParameter(Integer id) {
         return Result.success(capacityScopeService.delItemParameter(id));
     }
-    @ValueClassify(value="鑳藉姏鑼冨洿")
+
+    @ValueClassify(value = "鑳藉姏鑼冨洿")
     @ApiOperation(value = "淇敼椤圭洰妫�楠屽弬鏁�")
     @PostMapping("/upItemParameter")
     public Result<?> upItemParameter(@RequestBody StructureItemParameter itemParameter) {
         return Result.success(capacityScopeService.upItemParameter(itemParameter));
     }
-    @ValueClassify(value="鑳藉姏鑼冨洿")
+
+    @ValueClassify(value = "鑳藉姏鑼冨洿")
     @ApiOperation(value = "鑾峰彇妫�楠屽璞�")
     @PostMapping("/selectTestObjectList")
     public Result selectTestObjectList(@RequestBody Map<String, Object> data) throws Exception {
@@ -68,37 +97,43 @@
         PageTestObjectDto pageTestObjectDto = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), PageTestObjectDto.class);
         return Result.success(capacityScopeService.selectTestObjectList(page, pageTestObjectDto));
     }
-    @ValueClassify(value="鑳藉姏鑼冨洿")
+
+    @ValueClassify(value = "鑳藉姏鑼冨洿")
     @ApiOperation(value = "娣诲姞妫�楠屽璞�")
     @PostMapping("/addTestObject")
     public Result addTestObject(@RequestBody StructureTestObject testObject) {
         return Result.success(capacityScopeService.addTestObject(testObject));
     }
-    @ValueClassify(value="鑳藉姏鑼冨洿")
+
+    @ValueClassify(value = "鑳藉姏鑼冨洿")
     @ApiOperation(value = "鍒犻櫎妫�楠屽璞�")
     @PostMapping("/delTestObject")
     public Result<?> delTestObject(Integer id) {
         return Result.success(capacityScopeService.delTestObject(id));
     }
-    @ValueClassify(value="鑳藉姏鑼冨洿")
+
+    @ValueClassify(value = "鑳藉姏鑼冨洿")
     @ApiOperation(value = "淇敼妫�楠屽璞�")
     @PostMapping("/upTestObject")
     public Result upTestObject(@RequestBody StructureTestObject testObject) {
         return Result.success(capacityScopeService.upTestObject(testObject));
     }
+
     @ValueAuth
     @ApiOperation(value = "鑾峰彇妫�楠屽璞℃灇涓�")
     @GetMapping("/selectTestObjectByName")
     public Result selectTestObjectByName() {
         return Result.success(capacityScopeService.selectTestObjectByName());
     }
+
     @ValueClassify("璁惧")
     @ApiOperation(value = "璁惧閲岄潰閫夋嫨妫�楠岄」鐩�(鏍戝舰缁撴瀯)")
     @PostMapping("/getInsProduction")
-    public Result getInsProduction(){
+    public Result getInsProduction() {
         return Result.success(capacityScopeService.getInsProduction());
     }
-    @ValueClassify(value="鑳藉姏鑼冨洿")
+
+    @ValueClassify(value = "鑳藉姏鑼冨洿")
     @ApiOperation(value = "缁存姢妫�楠屽璞$殑浜у搧")
     @PostMapping("/selectProductListByObjectId")
     public Result selectProductListByObjectId(@RequestBody Map<String, Object> data) throws Exception {
@@ -106,19 +141,22 @@
         Product product = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), Product.class);
         return Result.success(productService.selectProductListByObjectId(page, product));
     }
-    @ValueClassify(value="鑳藉姏鑼冨洿")
+
+    @ValueClassify(value = "鑳藉姏鑼冨洿")
     @ApiOperation(value = "娣诲姞浜у搧")
     @PostMapping("/addProduct")
     public Result addProduct(@RequestBody Product product) {
         return Result.success(productService.addProduct(product));
     }
-    @ValueClassify(value="鑳藉姏鑼冨洿")
+
+    @ValueClassify(value = "鑳藉姏鑼冨洿")
     @ApiOperation(value = "淇敼浜у搧")
     @PostMapping("/upProduct")
     public Result upProduct(@RequestBody Product product) {
         return Result.success(productService.upProduct(product));
     }
-    @ValueClassify(value="鑳藉姏鑼冨洿")
+
+    @ValueClassify(value = "鑳藉姏鑼冨洿")
     @ApiOperation(value = "鍒犻櫎浜у搧")
     @PostMapping("/delProduct")
     public Result delProduct(Integer id) {
@@ -132,5 +170,177 @@
         return Result.success(capacityScopeService.getItemTree());
     }
 
-}
+    @Autowired
+    private EnumService enumService;
 
+    @ValueClassify(value = "鑳藉姏鑼冨洿")
+    @ApiOperation(value = "瀵煎叆")
+    @PostMapping("/importData")
+    @Transactional
+    public Result importData(@RequestParam("file") MultipartFile file) throws Exception {
+        InputStream inputStream = file.getInputStream();
+        ExcelUtil.readBySax(inputStream, 0, (i, l, list1) -> {
+            if (i == 0 && l >= 1) {
+                StructureItemParameter str = new StructureItemParameter();
+                if (list1.get(1) == null) {
+                    str.setSample(null);
+                } else {
+                    String brand = (String) list1.get(1);
+                    StringBuilder builder = new StringBuilder();
+                    builder.append("[");
+                    if (ObjectUtil.isNotEmpty(list1.get(2))){
+                        String production = (String) list1.get(2);
+                        if (!production.contains("銆�")){
+                            builder.append(String.format("[\"%s\",\"%s\"]",brand,production));
+                        }else{
+                            Arrays.stream(production.split("銆�")).forEach(item->{
+                                builder.append(String.format("[\"%s\",\"%s\"],",brand,item));
+                            });
+                            builder.deleteCharAt(builder.length() - 1);
+                        }
+                    }else{
+                        builder.append("[");
+                        builder.append(String.format("\"%s\"",brand));
+                        builder.append("]");
+                    }
+                    builder.append("]");
+                    str.setSample(builder.toString());
+                }
+                str.setInspectionItem(list1.get(4).toString());
+
+                if (list1.get(6) == null) {
+                    str.setInspectionItemSubclass(null);
+                } else {
+                    str.setInspectionItemSubclass(list1.get(6).toString());
+                }
+                StructureItemParameter db_str = null;
+                if (StringUtils.isEmpty(str.getInspectionItemSubclass())){
+                    // 姣旇緝涓や釜鏉′欢
+                    db_str = structureItemParameterService.getOne(Wrappers.lambdaQuery(StructureItemParameter.class)
+                            .eq(StructureItemParameter::getInspectionItem, str.getInspectionItem())
+                            .eq(StructureItemParameter::getSample, str.getSample())
+                    );
+                }else{
+                    db_str = structureItemParameterService.getOne(Wrappers.lambdaQuery(StructureItemParameter.class)
+                            .eq(StructureItemParameter::getInspectionItem, str.getInspectionItem())
+                            .eq(StructureItemParameter::getSample, str.getSample())
+                            .eq(StructureItemParameter::getInspectionItemSubclass,str.getInspectionItemSubclass())
+                    );
+                }
+                str.setInspectionItemEn(list1.get(5).toString());
+
+                if (list1.get(7) == null) {
+                    str.setInspectionItemSubclassEn(null);
+                } else {
+                    str.setInspectionItemSubclassEn(String.valueOf(list1.get(7).toString()));
+                }
+
+                if (list1.get(8) == null) {
+                    str.setMethod(null);
+                } else {
+                    StringBuffer buffer = new StringBuffer();
+                    String input = list1.get(8).toString();
+                    buffer.append("[");
+                    String[] values = input.split("銆�");
+                    for (String value : values) {
+                        buffer.append("[\"").append(value.trim()).append("\"],");
+                    }
+                    buffer.deleteCharAt(buffer.length() - 1);
+                    buffer.append("]");
+                    str.setMethod(buffer.toString());
+                }
+
+                if (list1.get(9) == null) {
+                    str.setLaboratory(null);
+                } else {
+                    str.setLaboratory(list1.get(9).toString());
+                }
+                if (list1.get(10) == null) {
+                    str.setUnit(null);
+                } else {
+                    str.setUnit(list1.get(10).toString());
+                }
+
+                if (list1.get(11) == null) {
+                    str.setAskTell(null);
+                } else {
+                    str.setAskTell(list1.get(11).toString());
+                }
+
+                if (list1.get(12) == null) {
+                    str.setAsk(null);
+                } else {
+                    str.setAsk(list1.get(12).toString());
+                }
+
+                if (list1.get(13) == null) {
+                    str.setPrice(null);
+                } else {
+                    str.setPrice(BigDecimal.valueOf(Long.parseLong((list1.get(13).toString()))));
+                }
+
+                if (list1.get(14) == null) {
+                    str.setManHour(null);
+                } else {
+                    str.setManHour(Double.valueOf(list1.get(14).toString()));
+                }
+
+                if (list1.get(15) == null) {
+                    str.setManHourGroup(null);
+                } else {
+                    str.setManHourGroup(list1.get(15).toString());
+                }
+
+                if (list1.get(16) == null) {
+                    str.setManDay(null);
+                } else {
+                    str.setManDay(Integer.valueOf(list1.get(16).toString()));
+                }
+                String jy = "0";
+                if (list1.get(17).toString().equals("闈為噰闆嗙被鍨�")) {
+                    jy = "0";
+                } else {
+                    jy = "1";
+                }
+                str.setInspectionItemType(jy);
+                String validateValueType = list1.get(18).toString();
+                if (StringUtils.isNotBlank(validateValueType)){
+                    Enums enums = enumService.getOne(Wrappers.lambdaQuery(Enums.class)
+                            .eq(Enums::getCategory, "妫�楠屽�肩被鍨�")
+                            .eq(Enums::getLabel, validateValueType));
+                    str.setInspectionValueType(enums.getValue());
+                }
+                int bsm = 0;
+                if (list1.get(19).toString().equals("鍚�")) {
+                    bsm = 0;
+                } else {
+                    bsm = 1;
+                }
+                str.setBsm(bsm + "");
+                StandardTemplate standTempIdByName = standardTemplateService.getStandTempIdByName(String.valueOf(list1.get(20)));
+                if (standTempIdByName != null) {
+                    str.setTemplateId(standTempIdByName.getId());
+                } else {
+                    str.setTemplateId(null);
+                }
+                str.setSonLaboratory(list1.get(21).toString());
+                structureItemParameterService.removeNoSample(JSON.toJSONString(list1.get(1)));
+                System.out.println(JSON.toJSONString(list1.get(1)));
+                // 濡傛灉鏁版嵁搴撻噷闈㈢殑鏁版嵁瀛樺湪閭d箞灏辨墽琛屾洿鏂版嫹璐濇搷浣�
+                try {
+                    if (ObjectUtils.isNotEmpty(db_str)){
+                        str.setId(db_str.getId());
+                        // 灏� str 杩涜鏇存柊
+                        structureItemParameterService.updateById(str);
+                    }else{
+                        structureItemParameterService.save(str);
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    throw new RuntimeException("鏈嶅姟绔姤閿欏暒!!!");
+                }
+            }
+        });
+        return Result.success();
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3