车间能级提升-智能设备管理系统
baoshiwei
2025-04-12 beaed6d077e7c3e9abfad68acb8c587835b5a406
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;
    /**
@@ -196,5 +205,58 @@
        return baseMapper.deleteByIds(ids) > 0;
    }
    @Override
    public String importData(MultipartFile file, boolean updateSupport) throws IOException, IOException {
        int successNum = 0;
        int failureNum = 0;
        StringBuilder successMsg = new StringBuilder();
        StringBuilder failureMsg = new StringBuilder();
        // 点检项目列表(假设存在对应的点检项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)
            .orElseThrow(() -> new ServiceException("导入失败,无法读取固定资产编号"));
        // 查询设备信息
        QueryWrapper<EimsEqu> query = new QueryWrapper<>();
        query.eq("asset_no", assetNo);
        EimsEquVo equVo = equMapper.selectVoOne(query);
        if (equVo == null) throw new ServiceException("设备未找到,请先在设备台帐中添加");
        for (InspectCheckItemVo itemVo : successList) {
            if ("设备状态卡状态".equals(itemVo.getItemName())) break;
            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++;
                failureMsg.append(failureNum).append("、导入失败<br>");
            } else {
                successNum++;
                successMsg.append(successNum).append("、导入成功<br>");
            }
        }
        return failureNum > 0 ? failureMsg.toString() : successMsg.toString();
    }
}