From f745556104a77d62e4e05cc95231d637290faf0a Mon Sep 17 00:00:00 2001
From: zhangherong <571457620@qq.com>
Date: 星期三, 26 三月 2025 14:56:59 +0800
Subject: [PATCH] art: 设备台账-导入功能

---
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentController.java |  100 ++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 96 insertions(+), 4 deletions(-)

diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentController.java
index 43f40b6..a451225 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentController.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentController.java
@@ -1,10 +1,12 @@
 package org.jeecg.modules.eam.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.system.base.controller.JeecgController;
@@ -14,14 +16,20 @@
 import org.jeecg.modules.eam.vo.EamEquipmentTree;
 import org.jeecg.modules.mdc.entity.MdcEquipment;
 import org.jeecg.modules.mdc.service.IMdcEquipmentService;
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.entity.ImportParams;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
 import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: 璁惧鍙拌处
@@ -75,7 +83,7 @@
             return Result.OK("娣诲姞澶辫触锛�");
         }
         //璋冪敤mdcEquipment鎻掑叆MDC璁惧
-        if(CommonConstant.DEFAULT_1.equals(eamEquipment.getMdcFlag())) {
+        if (CommonConstant.DEFAULT_1.equals(eamEquipment.getMdcFlag())) {
             //鎻掑叆MDC璁惧
             MdcEquipment mdcEquipment = new MdcEquipment();
             mdcEquipment.setEquipmentId(entity.getEquipmentCode());
@@ -109,7 +117,7 @@
     @DeleteMapping(value = "/delete")
     public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
         EamEquipment entity = eamEquipmentService.getById(id);
-        if(entity != null) {
+        if (entity != null) {
             entity.setDelFlag(CommonConstant.DEL_FLAG_1);
             eamEquipmentService.updateById(entity);
         }
@@ -128,7 +136,7 @@
         List<String> list = Arrays.asList(ids.split(","));
         list.forEach(id -> {
             EamEquipment entity = eamEquipmentService.getById(id);
-            if(entity != null) {
+            if (entity != null) {
                 entity.setDelFlag(CommonConstant.DEL_FLAG_1);
                 eamEquipmentService.updateById(entity);
             }
@@ -169,7 +177,91 @@
      */
     @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
     public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
-        return super.importExcel(request, response, EamEquipment.class);
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+            // 鑾峰彇涓婁紶鏂囦欢瀵硅薄
+            MultipartFile file = entity.getValue();
+            ImportParams params = new ImportParams();
+            params.setTitleRows(0);
+            params.setHeadRows(1);
+            params.setNeedSave(true);
+            try {
+                List<EamEquipment> list = ExcelImportUtil.importExcel(file.getInputStream(), EamEquipment.class, params);
+                //update-begin-author:taoyan date:20190528 for:鎵归噺鎻掑叆鏁版嵁
+                long start = System.currentTimeMillis();
+//                service.saveBatch(list);
+                StringBuilder sb = new StringBuilder();
+                for (EamEquipment eamEquipment : list) {
+                    //蹇呭~瀛楁鏍¢獙
+                    if (StringUtils.isBlank(eamEquipment.getEquipmentCode()) || StringUtils.isBlank(eamEquipment.getEquipmentName())) {
+                        sb.append(String.format("璁惧缂栫爜[%s]鎴栬澶囧悕绉癧%s]涓虹┖锛屾棤娉曞鍏n\n", eamEquipment.getEquipmentCode(), eamEquipment.getEquipmentName()));
+                        continue;
+                    }
+                    if (StringUtils.isBlank(eamEquipment.getEquipmentCategory())) {
+                        sb.append(String.format("璁惧缂栫爜[%s]璁惧鍒嗙被涓虹┖锛屾棤娉曞鍏n\n", eamEquipment.getEquipmentCode()));
+                        continue;
+                    }
+                    if (StringUtils.isBlank(eamEquipment.getOrgId()) || StringUtils.isBlank(eamEquipment.getEquipmentManager())) {
+                        sb.append(String.format("璁惧缂栫爜[%s]浣跨敤杞﹂棿鎴栬澶囩鐞嗗憳涓虹┖锛屾棤娉曞鍏n\n", eamEquipment.getEquipmentCode()));
+                        continue;
+                    }
+                    if (eamEquipment.getAcceptanceCheckDate() == null) {
+                        sb.append(String.format("璁惧缂栫爜[%s]楠屾敹涓虹┖锛屾棤娉曞鍏n\r", eamEquipment.getEquipmentCode()));
+                        continue;
+                    }
+                    if (StringUtils.isBlank(eamEquipment.getTechnologyStatus())) {
+                        sb.append(String.format("璁惧缂栫爜[%s]鎶�鏈姸鎬佷负绌猴紝鏃犳硶瀵煎叆\n\r", eamEquipment.getEquipmentCode()));
+                        continue;
+                    }
+                    EamEquipment one = eamEquipmentService.getOne(new LambdaQueryWrapper<EamEquipment>().eq(EamEquipment::getEquipmentCode, eamEquipment.getEquipmentCode()).eq(EamEquipment::getDelFlag, CommonConstant.DEL_FLAG_0));
+                    if (one != null) {
+                        sb.append(String.format("璁惧缂栫爜[%s]宸插瓨鍦紝鏃犳硶閲嶅瀵煎叆\n\r", eamEquipment.getEquipmentCode()));
+                        continue;
+                    }
+                    EamEquipment equipment = eamEquipmentService.saveEquipment(eamEquipment);
+                    if (equipment == null) {
+                        //淇濆瓨澶辫触锛岃烦杩囨湰娆″惊鐜�
+                        sb.append(String.format("璁惧缂栫爜[%s]淇濆瓨澶辫触锛屾棤娉曞鍏n\r", eamEquipment.getEquipmentCode()));
+                        continue;
+                    }
+                    //璋冪敤mdcEquipment鎻掑叆MDC璁惧
+                    if (CommonConstant.DEFAULT_1.equals(eamEquipment.getMdcFlag())) {
+                        //鎻掑叆MDC璁惧
+                        MdcEquipment mdcEquipment = new MdcEquipment();
+                        mdcEquipment.setEquipmentId(eamEquipment.getEquipmentCode());
+                        mdcEquipment.setEquipmentType(eamEquipment.getDeviceType());
+                        mdcEquipment.setEquipmentName(eamEquipment.getEquipmentName());
+                        mdcEquipmentService.addNewEquipmentFromEam(mdcEquipment, eamEquipment.getOrgId());
+                    }
+                }
+                //400鏉� saveBatch娑堣�楁椂闂�1592姣  寰幆鎻掑叆娑堣�楁椂闂�1947姣
+                //1200鏉�  saveBatch娑堣�楁椂闂�3687姣 寰幆鎻掑叆娑堣�楁椂闂�5212姣
+                log.info("娑堣�楁椂闂�" + (System.currentTimeMillis() - start) + "姣");
+                //update-end-author:taoyan date:20190528 for:鎵归噺鎻掑叆鏁版嵁
+                if (sb.length() > 0) {
+                    return Result.ok(sb.toString());
+                }
+                return Result.ok("鏂囦欢瀵煎叆鎴愬姛锛佹暟鎹鏁帮細" + list.size());
+            } catch (Exception e) {
+                //update-begin-author:taoyan date:20211124 for: 瀵煎叆鏁版嵁閲嶅澧炲姞鎻愮ず
+                String msg = e.getMessage();
+                log.error(msg, e);
+                if (msg != null && msg.indexOf("Duplicate entry") >= 0) {
+                    return Result.error("鏂囦欢瀵煎叆澶辫触:鏈夐噸澶嶆暟鎹紒");
+                } else {
+                    return Result.error("鏂囦欢瀵煎叆澶辫触:" + e.getMessage());
+                }
+                //update-end-author:taoyan date:20211124 for: 瀵煎叆鏁版嵁閲嶅澧炲姞鎻愮ず
+            } finally {
+                try {
+                    file.getInputStream().close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return Result.error("鏂囦欢瀵煎叆澶辫触锛�");
     }
 
     @ApiOperation(value = "璁惧琛�-閫氳繃杞﹂棿ids鑾峰彇璁惧鏍�", notes = "璁惧琛�-閫氳繃杞﹂棿ids鑾峰彇璁惧鏍�")

--
Gitblit v1.9.3