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