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 ++++++++++++++++++++++++++++++++-
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java        |   22 ++++--
 2 files changed, 110 insertions(+), 12 deletions(-)

diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java
index 3bacaed..7f5a5d0 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java
@@ -34,6 +34,7 @@
 	private java.lang.String id;
 	/**鍒涘缓浜�*/
     @ApiModelProperty(value = "鍒涘缓浜�")
+	@Dict(dicCode = "sys_user, realname, username")
 	private java.lang.String createBy;
 	/**鍒涘缓鏃堕棿*/
     @ApiModelProperty(value = "鍒涘缓鏃堕棿")
@@ -42,6 +43,7 @@
 	private java.util.Date createTime;
 	/**鏇存柊浜�*/
     @ApiModelProperty(value = "鏇存柊浜�")
+	@Dict(dicCode = "sys_user, realname, username")
 	private java.lang.String updateBy;
 	/**鏇存柊鏃堕棿*/
     @ApiModelProperty(value = "鏇存柊鏃堕棿")
@@ -60,11 +62,11 @@
     @ApiModelProperty(value = "璁惧鍚嶇О")
 	private java.lang.String equipmentName;
 	/**鍏抽敭璁惧鏍囪瘑*/
-	@Excel(name = "鍏抽敭璁惧鏍囪瘑", width = 15)
+	@Excel(name = "鍏抽敭璁惧鏍囪瘑", width = 15, dicCode = "yn")
 	@ApiModelProperty(value = "鍏抽敭璁惧鏍囪瘑")
 	private java.lang.String equipmentImportance;
 	/**鎶�鏈姸鎬�*/
-	@Excel(name = "璁惧鐘舵��", width = 15, dicCode = "technology_status")
+	@Excel(name = "鎶�鏈姸鎬�", width = 15, dicCode = "technology_status")
 	@ApiModelProperty(value = "鎶�鏈姸鎬�")
 	@Dict(dicCode = "technology_status")
 	private java.lang.String technologyStatus;
@@ -73,17 +75,17 @@
 	@ApiModelProperty(value = "鎿嶄綔绯荤粺")
 	private java.lang.String operationSystem;
 	/**浣跨敤閮ㄩ棬*/
-	@Excel(name = "浣跨敤閮ㄩ棬", width = 15, dicCode = "mdc_production, production_name, id")
+	@Excel(name = "浣跨敤杞﹂棿", width = 25, dictTable = "mdc_production", dicText = "production_name", dicCode = "id")
 	@ApiModelProperty(value = "浣跨敤閮ㄩ棬")
 	@Dict(dicCode = "mdc_production, production_name, id")
 	private java.lang.String orgId;
 	/**璁惧绠$悊鍛�*/
-	@Excel(name = "璁惧绠$悊鍛�", width = 15, dicCode = "sys_user, realname, username")
+	@Excel(name = "璁惧绠$悊鍛�", width = 35, dictTable = "sys_user", dicText = "realname", dicCode = "username")
 	@ApiModelProperty(value = "璁惧绠$悊鍛�")
 	@Dict(dicCode = "sys_user, realname, username")
 	private java.lang.String equipmentManager;
 	/**璁惧鍒嗙被*/
-	@Excel(name = "璁惧鍒嗙被", width = 15, dicCode = "equipment_category")
+	@Excel(name = "璁惧鎵�灞炲垎绫�", width = 15, dicCode = "equipment_category")
 	@ApiModelProperty(value = "璁惧鍒嗙被")
 	@Dict(dicCode = "equipment_category")
 	private java.lang.String equipmentCategory;
@@ -96,7 +98,7 @@
     @ApiModelProperty(value = "璁惧瑙勬牸")
 	private java.lang.String equipmentSpecification;
 	/**涓昏酱杩炴帴灏哄*/
-	@Excel(name = "涓昏酱杩炴帴灏哄", width = 15)
+	@Excel(name = "涓昏酱杩炴帴灏哄", width = 25)
 	@ApiModelProperty(value = "涓昏酱杩炴帴灏哄")
 	private java.lang.String spindleConnectDimension;
 	/**鎬诲姛鐜�*/
@@ -125,31 +127,35 @@
 	@ApiModelProperty(value = "鏈哄簥鍘傚")
 	private java.lang.String manufacturingEnterprise;
 	/**鏉ユ簮鍥藉*/
-	@Excel(name = "鏉ユ簮鍥藉", width = 15)
+	@Excel(name = "鏈哄簥鏉ユ簮鍥藉", width = 25)
 	@ApiModelProperty(value = "鏉ユ簮鍥藉")
 	private java.lang.String originCountry;
 	/**鍑哄巶鏃ユ湡*/
+	@Excel(name = "鍑哄巶鏃ユ湡", width = 25, format = "yyyy-MM-dd")
 	@ApiModelProperty(value = "鍑哄巶鏃ユ湡")
 	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
 	@DateTimeFormat(pattern = "yyyy-MM-dd")
 	private java.util.Date leaveFactoryDate;
 	/**楠屾敹鏃ユ湡*/
+	@Excel(name = "楠屾敹鏃ユ湡", width = 25, format = "yyyy-MM-dd")
 	@ApiModelProperty(value = "楠屾敹鏃ユ湡")
 	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
 	@DateTimeFormat(pattern = "yyyy-MM-dd")
 	private java.util.Date acceptanceCheckDate;
 	/**璐ㄤ繚寮�濮嬫棩鏈�*/
+	@Excel(name = "璐ㄤ繚寮�濮嬫棩鏈�", width = 25, format = "yyyy-MM-dd")
 	@ApiModelProperty(value = "璐ㄤ繚寮�濮嬫棩鏈�")
 	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
 	@DateTimeFormat(pattern = "yyyy-MM-dd")
 	private java.util.Date warrantyStartDate;
 	/**璐ㄤ繚缁撴潫鏃ユ湡*/
+	@Excel(name = "璐ㄤ繚缁撴潫鏃ユ湡", width = 25, format = "yyyy-MM-dd")
 	@ApiModelProperty(value = "璐ㄤ繚缁撴潫鏃ユ湡")
 	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
 	@DateTimeFormat(pattern = "yyyy-MM-dd")
 	private java.util.Date warrantyEndDate;
 	/**鏄惁瀹炴柦MDC*/
-	@Excel(name = "鏄惁瀹炴柦MDC", width = 15)
+	@Excel(name = "鏄惁瀹炴柦MDC", width = 15, dicCode = "yn")
 	@ApiModelProperty(value = "鏄惁瀹炴柦MDC")
 	private java.lang.String mdcFlag;
 	/*=====================涓婇潰鏄矁鍏嬫ā鏉垮瓧娈�======================*/
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