From db504ee3159dfe3ebfb407e66ef9d46bac5caadb Mon Sep 17 00:00:00 2001
From: Crunchy <3114200645@qq.com>
Date: 星期四, 23 五月 2024 16:47:40 +0800
Subject: [PATCH] 2024-5-23 导入标准明细完成

---
 cnas-server/src/main/java/com/yuanchu/mom/service/StandardMethodService.java          |    6 +
 cnas-server/src/main/java/com/yuanchu/mom/mapper/StandardMethodMapper.java            |    5 -
 cnas-server/src/main/java/com/yuanchu/mom/controller/StandardMethodController.java    |   10 +++
 cnas-server/src/main/java/com/yuanchu/mom/service/impl/StandardMethodServiceImpl.java |  136 ++++++++++++++++++++++++++++++++++++++++++++-
 4 files changed, 149 insertions(+), 8 deletions(-)

diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/StandardMethodController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/StandardMethodController.java
index 072928d..d8c5d3f 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/controller/StandardMethodController.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/StandardMethodController.java
@@ -11,7 +11,9 @@
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.IOException;
 import java.util.Map;
 
 @Api(tags = "鏍囧噯鏂规硶")
@@ -55,4 +57,12 @@
     public Result<?> upStandardMethod(@RequestBody StandardMethod standardMethod) {
         return Result.success(standardMethodService.upStandardMethod(standardMethod));
     }
+
+    @ValueClassify("瀹為獙瀹ょ殑妫�娴嬭兘鍔涙。妗�")
+    @ApiOperation(value = "瀵煎叆鏍囧噯鏄庣粏")
+    @PostMapping("/inputFansSubmitCsv")
+    public Result<?> inputExcel(@RequestPart("file") MultipartFile file) throws IOException {
+        standardMethodService.inputExcel(file);
+        return Result.success();
+    }
 }
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/StandardMethodMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/StandardMethodMapper.java
index 9fcddc7..065b6b1 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/mapper/StandardMethodMapper.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/StandardMethodMapper.java
@@ -3,9 +3,8 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.mybatis_config.MyBaseMapper;
 import com.yuanchu.mom.pojo.StandardMethod;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.yuanchu.mom.pojo.StructureItemParameter;
 
 /**
 * @author Administrator
@@ -13,7 +12,7 @@
 * @createDate 2024-03-03 19:21:41
 * @Entity com.yuanchu.mom.pojo.StandardMethod
 */
-public interface StandardMethodMapper extends BaseMapper<StandardMethod> {
+public interface StandardMethodMapper extends MyBaseMapper<StandardMethod> {
 
     IPage<StandardMethod> selectStandardMethodList(Page page, QueryWrapper<StandardMethod> ew);
 
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/StandardMethodService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/StandardMethodService.java
index 8bfb29f..7f7d8fb 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/service/StandardMethodService.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/StandardMethodService.java
@@ -1,10 +1,11 @@
 package com.yuanchu.mom.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.yuanchu.mom.pojo.StandardMethod;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.yuanchu.mom.pojo.StructureItemParameter;
+import com.yuanchu.mom.pojo.StandardMethod;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -25,4 +26,5 @@
 
     int upStandardMethod(StandardMethod standardMethod);
 
+    void inputExcel(MultipartFile file) throws IOException;
 }
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/StandardMethodServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/StandardMethodServiceImpl.java
index 146faef..2e227d8 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/StandardMethodServiceImpl.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/StandardMethodServiceImpl.java
@@ -1,5 +1,8 @@
 package com.yuanchu.mom.service.impl;
 
+import cn.hutool.json.JSONUtil;
+import cn.hutool.poi.excel.ExcelUtil;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -11,10 +14,11 @@
 import com.yuanchu.mom.utils.QueryWrappers;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.io.IOException;
+import java.util.*;
 
 /**
 * @author Administrator
@@ -62,6 +66,132 @@
         int i = standardMethodMapper.updateById(standardMethod);
         return i;
     }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void inputExcel(MultipartFile file) throws IOException {
+        // 瀛樺偍妫�娴嬪璞ist
+        List<Object> structureTestObjectIdList = new ArrayList<>();
+        List<StandardMethod> result = new ArrayList<>();
+        ExcelUtil.readBySax(file.getInputStream(), 0, (i, l, list) -> {
+            // 鍘婚櫎绗竴琛岃〃澶�
+            if (l == 0) {
+                return;
+            }
+            // 瀛樺偍鍞竴妫�娴嬪璞�
+            if (!structureTestObjectIdList.contains(list.get(2))) {
+                structureTestObjectIdList.add(list.get(2));
+            }
+            StandardMethod standardMethod = formatData(list);
+            result.add(standardMethod);
+        });
+        addStructureTest(structureTestObjectIdList, result);
+    }
+
+    // 鏍煎紡鍖栨暟鎹�
+    public StandardMethod formatData(List<Object> list) {
+        StandardMethod standardMethod = new StandardMethod();
+        standardMethod.setField(list.get(1).toString());
+        // 閫犳牸寮�
+        List<List<Object>> structureTestObjectId = new ArrayList<>();
+        if (ObjectUtils.isEmpty(list.get(3))){
+            structureTestObjectId.add(Arrays.asList(list.get(2)));
+        } else {
+            structureTestObjectId.add(Arrays.asList(list.get(2), list.get(3)));
+        }
+        standardMethod.setStructureTestObjectId(JSONUtil.toJsonStr(structureTestObjectId));
+        standardMethod.setCode(list.get(4).toString());
+        standardMethod.setName(list.get(5).toString());
+        standardMethod.setNameEn(list.get(6).toString());
+        if (!Objects.equals(list.get(7), null)) {
+            standardMethod.setRemark(list.get(7).toString());
+        }
+        standardMethod.setQualificationId(list.get(8).toString());
+        if (ObjectUtils.isNotEmpty(list.get(9))) {
+            if (list.get(9).equals("鏄�")) {
+                standardMethod.setIsProduct(1);
+            } else if (list.get(9).equals("鍚�")) {
+                standardMethod.setIsProduct(0);
+            }
+        }
+        if (ObjectUtils.isNotEmpty(list.get(10))) {
+            if (list.get(10).equals("鏄�")) {
+                standardMethod.setIsUse(1);
+            } else if (list.get(9).equals("鍚�")) {
+                standardMethod.setIsUse(0);
+            }
+        }
+        return standardMethod;
+    }
+
+    // 鏂板鏁版嵁
+    public void addStructureTest(List<Object> structureTestObjectIdList, List<StandardMethod> standardMethodList) {
+        List<StandardMethod> updateList = new ArrayList<>();
+        List<Integer> deleteListId = new ArrayList<>();
+        List<StandardMethod> addList = new ArrayList<>();
+        if (!structureTestObjectIdList.isEmpty()) {
+            // 寰幆excel閲岄潰鐨勫垎缁�
+            structureTestObjectIdList.forEach(j -> {
+                // 浠xcel涓殑缁勫悕鏌ヨ鏁版嵁搴撲腑鐨勫垎缁�
+                List<StandardMethod> standardMethods = baseMapper.selectList(Wrappers.<StandardMethod>lambdaQuery()
+                        .like(StandardMethod::getStructureTestObjectId, "\"" + j + "\""));
+                // 灏嗙粨鏋滃惊鐜尮閰�
+                for (int i = 0; i < standardMethods.size(); i++) {
+                    boolean isExistence = false;
+                    for (int i1 = 0; i1 < standardMethodList.size(); i1++) {
+                        // 鏇存柊
+                        if (standardMethods.get(i).getStructureTestObjectId().equals(standardMethodList.get(i1).getStructureTestObjectId())
+                                && standardMethods.get(i).getCode().equals(standardMethodList.get(i1).getCode())
+                                && standardMethods.get(i).getField().equals(standardMethodList.get(i1).getField())) {
+                            // 缁檈xcel鏁版嵁璧嬪�糹d鍋氭洿鏂�
+                            standardMethodList.get(i1).setId(standardMethods.get(i).getId());
+                            // 鏇存柊
+                            updateList.add(standardMethodList.get(i1));
+                            isExistence = true;
+                            break;
+                        }
+                    }
+                    // 鍒犻櫎
+                    if (!isExistence) {
+                        deleteListId.add(standardMethods.get(i).getId());
+                    }
+                }
+                for (int i = 0; i < standardMethodList.size(); i++) {
+                    if (standardMethodList.get(i).getStructureTestObjectId().contains("\"" + j + "\"")) {
+                        boolean isExistence = false;
+                        for (int i1 = 0; i1 < standardMethods.size(); i1++) {
+                            if (standardMethods.get(i1).getStructureTestObjectId().equals(standardMethodList.get(i).getStructureTestObjectId())
+                                    && standardMethods.get(i1).getCode().equals(standardMethodList.get(i).getCode())
+                                    && standardMethods.get(i1).getField().equals(standardMethodList.get(i).getField())) {
+                                isExistence = true;
+                                break;
+                            }
+                        }
+                        // 鏂板
+                        if (!isExistence) {
+                            addList.add(standardMethodList.get(i));
+                        }
+                    }
+                }
+            });
+        }
+        if (!addList.isEmpty()) {
+            // 鏂板
+            baseMapper.insertBatchSomeColumn(addList);
+        }
+
+        if (!deleteListId.isEmpty()) {
+            // 鍒犻櫎
+            baseMapper.deleteBatchIds(deleteListId);
+        }
+
+        if (!updateList.isEmpty()) {
+            // 鏇存柊
+            updateList.forEach(i -> {
+                baseMapper.updateById(i);
+            });
+        }
+    }
 }
 
 

--
Gitblit v1.9.3