车间能级提升-智能设备管理系统
baoshiwei
2025-05-29 21811bad262b3f774ca7c12a68e0bf64a8321501
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectPlanServiceImpl.java
@@ -1,6 +1,9 @@
package org.dromara.eims.service.impl;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -9,7 +12,13 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.eims.domain.EimsEqu;
import org.dromara.eims.domain.vo.EimsEquVo;
import org.dromara.eims.domain.vo.EimsMaintPlanVo;
import org.dromara.eims.domain.vo.InspectCheckItemVo;
import org.dromara.eims.listener.EasyExcelCellListener;
import org.dromara.eims.listener.InspectCheckItemImportListener;
import org.dromara.eims.mapper.EimsEquMapper;
import org.dromara.system.domain.SysDept;
import org.dromara.system.domain.vo.SysDeptVo;
import org.dromara.system.mapper.SysDeptMapper;
@@ -19,11 +28,10 @@
import org.dromara.eims.domain.EimsInspectPlan;
import org.dromara.eims.mapper.EimsInspectPlanMapper;
import org.dromara.eims.service.IEimsInspectPlanService;
import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.io.IOException;
import java.util.*;
/**
 * 点检计划Service业务层处理
@@ -37,6 +45,7 @@
    private final EimsInspectPlanMapper baseMapper;
    private final SysDeptMapper sysDeptMapper;
    private final EimsEquMapper equMapper;
    /**
@@ -95,6 +104,8 @@
        lqw.eq(bo.getInspUser() != null, EimsInspectPlan::getInspUser, bo.getInspUser());
        lqw.eq(bo.getInspDept() != null, EimsInspectPlan::getInspDept, bo.getInspDept());
        lqw.eq(StringUtils.isNotBlank(bo.getStatus()), EimsInspectPlan::getStatus, bo.getStatus());
        // 按创建时间倒序
        lqw.orderByDesc(EimsInspectPlan::getCreateTime);
        return lqw;
    }
    private QueryWrapper<EimsInspectPlan> buildWrapper(EimsInspectPlanBo bo) {
@@ -196,5 +207,75 @@
        return baseMapper.deleteByIds(ids) > 0;
    }
    @Override
    public String importData(MultipartFile file, boolean updateSupport) {
        try {
            // 点检项目列表(假设存在对应的点检项VO)
            InspectCheckItemImportListener checkItemImportListener = new InspectCheckItemImportListener(updateSupport);
            EasyExcel.read(file.getInputStream(), InspectCheckItemVo.class, checkItemImportListener)
                .headRowNumber(3).sheet().doRead();
            List<InspectCheckItemVo> successList = checkItemImportListener.getSuccessList();
            // 读取固定资产编号(假设位置不同)
            EasyExcelCellListener assetNoListener = new EasyExcelCellListener(2, 23);
            EasyExcel.read(file.getInputStream(), assetNoListener).headRowNumber(0).sheet().doReadSync();
            String assetNo = Optional.ofNullable(assetNoListener.getCellValue())
                .map(value -> {
                    int colonIndex = Math.max(value.indexOf(":"), value.indexOf(":")); // 合并冒号处理
                    return colonIndex != -1 ? value.substring(colonIndex + 1) : value;
                })
                .map(String::trim)
                .orElse("");
            if (assetNo.isEmpty()) {
                return file.getOriginalFilename() + " 导入失败,无法读取固定资产编号";
            }
            // 查询设备信息
            QueryWrapper<EimsEqu> query = new QueryWrapper<>();
            query.eq("asset_no", assetNo);
            EimsEquVo equVo = equMapper.selectVoOne(query);
            if (equVo == null) {
                return file.getOriginalFilename() + " 设备未找到,请先在设备台帐中添加";
            }
            int successNum = 0;
            int failureNum = 0;
            for (InspectCheckItemVo itemVo : successList) {
                if ("设备状态卡状态".equals(itemVo.getItemName()) || itemVo.getItemName().contains("运行时间")) {
                    break;
                }
                // 如果允许覆盖,则删除已存在的记录
                if (updateSupport) {
                    LambdaQueryWrapper<EimsInspectPlan> deleteWrapper = Wrappers.lambdaQuery();
                    deleteWrapper.eq(EimsInspectPlan::getEquId, equVo.getEquId())
                        .eq(EimsInspectPlan::getInspName, itemVo.getItemName())
                        .eq(EimsInspectPlan::getStatus, "0");
                    baseMapper.delete(deleteWrapper);
                }
                // 新增点检计划
                EimsInspectPlanBo bo = new EimsInspectPlanBo();
                bo.setEquId(equVo.getEquId());
                bo.setInspName(itemVo.getItemName());
                bo.setStatus("0");
                bo.setInspType("1");
                bo.setInspRule("0");
                if (!insertByBo(bo)) {
                    failureNum++;
                } else {
                    successNum++;
                }
            }
            return file.getOriginalFilename() + " 导入成功:" + successNum + "条,导入失败:" + failureNum + "条";
        } catch (Exception e) {
            return file.getOriginalFilename() + " 导入异常:" + e.getMessage();
        }
    }
}