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