车间能级提升-智能设备管理系统
zhuguifei
2025-04-24 bef4312ca5a28088c462290a9c5ad356fbb06141
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,66 @@
        return baseMapper.deleteByIds(ids) > 0;
    }
    @Override
    public String importData(MultipartFile file, boolean updateSupport) throws IOException, IOException {
        // 点检项目列表(假设存在对应的点检项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("设备未找到,请先在设备台帐中添加");
        int successNum = 0;
        int failureNum = 0;
        StringBuilder successMsg = new StringBuilder();
        StringBuilder failureMsg = new StringBuilder();
        for (InspectCheckItemVo itemVo : successList) {
            if ("设备状态卡状态".equals(itemVo.getItemName())) 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++;
                failureMsg.append(failureNum).append("、导入失败<br>");
            } else {
                successNum++;
                successMsg.append(successNum).append("、导入成功<br>");
            }
        }
        return failureNum > 0 ? failureMsg.toString() : successMsg.toString();
    }
}