From beaed6d077e7c3e9abfad68acb8c587835b5a406 Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期六, 12 四月 2025 16:17:16 +0800
Subject: [PATCH] feat(eims): 添加点检计划和保养计划的导入功能

---
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectPlanServiceImpl.java |   70 +++++++++++++++++++++++++++++++++--
 1 files changed, 66 insertions(+), 4 deletions(-)

diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectPlanServiceImpl.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectPlanServiceImpl.java
index 865f6de..52e43d2 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectPlanServiceImpl.java
+++ b/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();
+
+        // 鐐规椤圭洰鍒楄〃锛堝亣璁惧瓨鍦ㄥ搴旂殑鐐规椤筕O锛�
+        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();
+    }
+
 
 }

--
Gitblit v1.9.3