车间能级提升-智能设备管理系统
baoshiwei
2025-05-29 21811bad262b3f774ca7c12a68e0bf64a8321501
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectPlanServiceImpl.java
@@ -208,64 +208,73 @@
    }
    @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();
    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)
            .orElseThrow(() -> new ServiceException("导入失败,无法读取固定资产编号"));
            // 读取固定资产编号(假设位置不同)
            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("");
        // 查询设备信息
        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);
            if (assetNo.isEmpty()) {
                return file.getOriginalFilename() + " 导入失败,无法读取固定资产编号";
            }
            // 新增点检计划
            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>");
            // 查询设备信息
            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();
        }
        return failureNum > 0 ? failureMsg.toString() : successMsg.toString();
    }