zhangherong
2025-03-26 f745556104a77d62e4e05cc95231d637290faf0a
art: 设备台账-导入功能
已修改2个文件
122 ■■■■■ 文件已修改
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentController.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
    /*=====================上面是沃克模板字段======================*/
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获取设备树")