From 00cf6c13531447af59a8d2121bbfb1a3a1f68c0d Mon Sep 17 00:00:00 2001
From: zhuguifei <zhuguifei@zhuguifeideiMac.local>
Date: 星期五, 06 六月 2025 09:15:29 +0800
Subject: [PATCH] Merge branch 'main' of http://lanpucloud.cn:1111/r/eims-master

---
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintPlanServiceImpl.java |  318 +++++++++++++++++++++++++++++++---------------------
 1 files changed, 188 insertions(+), 130 deletions(-)

diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintPlanServiceImpl.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintPlanServiceImpl.java
index 4518514..85b0b39 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintPlanServiceImpl.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintPlanServiceImpl.java
@@ -204,153 +204,211 @@
     }
 
 
-    public String importData(MultipartFile is, boolean updateSupport) throws IOException {
-    int successNum = 0;
-    int failureNum = 0;
-    StringBuilder successMsg = new StringBuilder();
-    StringBuilder failureMsg = new StringBuilder();
+    public String importData(MultipartFile is, boolean updateSupport) {
+        try {
+            int successNum = 0;
+            int failureNum = 0;
 
+            // 淇濆吇椤圭洰鍒楄〃
+            MaintCheckItemImportListener checkItemImportListener = new MaintCheckItemImportListener(updateSupport);
+            EasyExcel.read(is.getInputStream(), MaintCheckItemVo.class, checkItemImportListener).headRowNumber(4).sheet().doRead();
+            List<MaintCheckItemVo> successList = checkItemImportListener.getSuccessList();
 
-        // 淇濆吇椤圭洰鍒楄〃
-        MaintCheckItemImportListener checkItemImportListener = new MaintCheckItemImportListener(updateSupport);
-        EasyExcel.read(is.getInputStream(), MaintCheckItemVo.class, checkItemImportListener).headRowNumber(4).sheet().doRead();
-        List<MaintCheckItemVo> successList = checkItemImportListener.getSuccessList();
+            // 璇诲彇鍥哄畾璧勪骇缂栧彿
+            EasyExcelCellListener readListener = new EasyExcelCellListener(3, 1);
+            EasyExcel.read(is.getInputStream(), readListener).headRowNumber(0).sheet().doReadSync();
+            String assetNo = Optional.ofNullable(readListener.getCellValue())
+                .map(value -> {
+                    int colonIndex = Math.max(value.indexOf(":"), value.indexOf("锛�")); // 鍚堝苟鍐掑彿澶勭悊
+                    return colonIndex != -1 ? value.substring(colonIndex + 1) : value;
+                })
+                .map(String::trim)
+                .orElse("");
 
-
-        // 璇诲彇鍥哄畾璧勪骇缂栧彿
-        EasyExcelCellListener readListener = new EasyExcelCellListener(3, 1);
-        EasyExcel.read(is.getInputStream(), readListener).headRowNumber(0).sheet().doReadSync();
-        String assetNo = Optional.ofNullable(readListener.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 readYearListener = new EasyExcelCellListener(2, 3);
-        EasyExcel.read(is.getInputStream(), readYearListener).headRowNumber(0).sheet().doReadSync();
-        String yearStr = readYearListener.getCellValue();
-        String year = yearStr.replaceAll("[^\\d]", ""); // 鍘婚櫎闈炴暟瀛楀瓧绗�
-        year = (year.length() == 4) ? year : DateUtils.getDate().substring(0,4);
-
-        QueryWrapper<EimsEqu> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("asset_no", assetNo);
-        EimsEquVo eimsEquVo = equMapper.selectVoOne(queryWrapper);
-        if (eimsEquVo == null) throw new ServiceException("瀵煎叆澶辫触锛岃澶囨湭鎵惧埌璇峰湪璁惧鍙板笎涓坊鍔�");
-
-        // 鏈堜唤瀛楁澶勭悊浼樺寲
-        String[] monthFields = {"january","february","march","april","may","june",
-                              "july","august","september","october","november","december"};
-
-        for (MaintCheckItemVo itemVo : successList) {
-            if ("鎵ц浜虹鍚�".equals(itemVo.getItemName())) break;
-
-            EimsMaintPlanBo maintPlanBo = new EimsMaintPlanBo();
-            maintPlanBo.setEquId(eimsEquVo.getEquId());
-            maintPlanBo.setMaintName(itemVo.getItemName());
-            maintPlanBo.setStatus("0");
-            maintPlanBo.setMaintType("1");
-            maintPlanBo.setMaintRule("0");
-            // 娣诲姞period鏍¢獙
-            String period = itemVo.getPeriod();
-            if (StringUtils.isBlank(period)) {
-                failureNum++;
-                failureMsg.append(failureNum).append("銆佸懆鏈熷瓧娈典负绌�<br>");
-                continue;
+            if (assetNo.isEmpty()) {
+                return is.getOriginalFilename() + " 瀵煎叆澶辫触锛屾棤娉曡鍙栧浐瀹氳祫浜х紪鍙�";
             }
 
-            try {
-                if (period.length() > 1) {
-                    maintPlanBo.setMaintCycle(Long.parseLong(period.substring(0, period.length() - 1)));
-                    String substring = period.substring(period.length() - 1);
-                    // 杞崲鍛ㄦ湡鍗曚綅锛孧杞崲涓�3锛孌杞崲涓�1锛孻杞崲涓�5锛學杞崲涓�2锛孮杞崲涓�4
-                    switch (substring) {
-                        case "M":
-                            substring = "3";
-                            break;
-                        case "D":
-                            substring = "1";
-                            break;
-                        case "Y":
-                            substring = "5";
-                            break;
-                        case "W":
-                            substring = "2";
-                            break;
-                        case "Q":
-                            substring = "4";
-                            break;
-                        default:
-                    }
-                    maintPlanBo.setMaintCycleUnit(substring);
-                } else {
-                    maintPlanBo.setMaintCycle(Long.parseLong(period));
-                    maintPlanBo.setMaintCycleUnit("");
-                }
-            } catch (NumberFormatException e) {
-                failureNum++;
-                failureMsg.append(failureNum).append("銆佹棤鏁堢殑鍛ㄦ湡鏍煎紡:").append(period).append("<br>");
-                continue;
+            // 璇诲彇淇濆吇璁″垝骞翠唤
+            EasyExcelCellListener readYearListener = new EasyExcelCellListener(2, 3);
+            EasyExcel.read(is.getInputStream(), readYearListener).headRowNumber(0).sheet().doReadSync();
+            String yearStr = readYearListener.getCellValue();
+            if (yearStr == null || yearStr.isEmpty()) {
+                yearStr = "";
+            }
+            String year = yearStr.replaceAll("[^\\d]", ""); // 鍘婚櫎闈炴暟瀛楀瓧绗�
+
+            year = (year.length() == 4) ? year : DateUtils.getDate().substring(0,4);
+
+            QueryWrapper<EimsEqu> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("asset_no", assetNo);
+            EimsEquVo eimsEquVo = equMapper.selectVoOne(queryWrapper);
+            if (eimsEquVo == null) {
+                return is.getOriginalFilename() + " 璁惧鏈壘鍒帮紝璇峰厛鍦ㄨ澶囧彴甯愪腑娣诲姞";
             }
 
-            // 鏈堜唤鍒ゆ柇浼樺寲
-            for (int i = 0; i < monthFields.length; i++) {
-                try {
-                    String monthValue = (String) MaintCheckItemVo.class
-                        .getMethod("get" + StringUtils.capitalize(monthFields[i]))
-                        .invoke(itemVo);
+            // 鏈堜唤瀛楁澶勭悊浼樺寲
+            String[] monthFields = {"january","february","march","april","may","june",
+                                  "july","august","september","october","november","december"};
 
-                    if (StringUtils.isNotBlank(monthValue)) {
-                        String month = String.format("%02d", i+1); // 淇濊瘉涓や綅鏈堜唤
-                        maintPlanBo.setMaintFirstTime(DateUtils.parseDate(year + "-" + month + "-01"));
-                        break;
-                    }
-                } catch (Exception e) {
-                    // 鍙嶅皠寮傚父澶勭悊
+            for (MaintCheckItemVo itemVo : successList) {
+                if ("鎵ц浜虹鍚�".equals(itemVo.getItemName())) break;
+
+                EimsMaintPlanBo maintPlanBo = new EimsMaintPlanBo();
+                maintPlanBo.setEquId(eimsEquVo.getEquId());
+                maintPlanBo.setMaintName(itemVo.getItemName());
+                maintPlanBo.setStatus("0");
+                maintPlanBo.setMaintType("1");
+                maintPlanBo.setMaintRule("0");
+
+                // 娣诲姞period鏍¢獙
+                String period = itemVo.getPeriod();
+                if (StringUtils.isBlank(period)) {
                     failureNum++;
-                    failureMsg.append(failureNum).append("銆佹湀浠藉瓧娈佃闂紓甯�<br>");
                     continue;
                 }
+                if (period.length() == 1) {
+                    period = "1"+period;
+                }
+
+                try {
+                    if (period.length() > 1) {
+                        String num = period.replaceAll("[^\\d]", "");
+                        if ("".equals(num)) {
+                            switch (period) {
+                                case "涓�涓湀":
+                                    maintPlanBo.setMaintCycle(1L);
+                                    maintPlanBo.setMaintCycleUnit("3");
+                                    break;
+                                case "涓や釜鏈�":
+                                    maintPlanBo.setMaintCycle(2L);
+                                    maintPlanBo.setMaintCycleUnit("3");
+                                    break;
+                                case "浜屼釜鏈�":
+                                    maintPlanBo.setMaintCycle(2L);
+                                    maintPlanBo.setMaintCycleUnit("3");
+                                    break;
+                                case "涓変釜鏈�":
+                                    maintPlanBo.setMaintCycle(3L);
+                                    maintPlanBo.setMaintCycleUnit("3");
+                                    break;
+                                case "鍏釜鏈�":
+                                    maintPlanBo.setMaintCycle(6L);
+                                    maintPlanBo.setMaintCycleUnit("3");
+                                    break;
+                                default:
+                                    break;
+                            }
+                        }else {
+
+                            maintPlanBo.setMaintCycle(Long.parseLong(num));
+                            String substring = period.replace(num, "");
+                            // 杞崲鍛ㄦ湡鍗曚綅锛孧杞崲涓�3锛孌杞崲涓�1锛孻杞崲涓�5锛學杞崲涓�2锛孮杞崲涓�4
+                            switch (substring) {
+                                case "M":
+                                    substring = "3";
+                                    break;
+                                case "D":
+                                    substring = "1";
+                                    break;
+                                case "Y":
+                                    substring = "5";
+                                    break;
+                                case "W":
+                                    substring = "2";
+                                    break;
+                                case "Q":
+                                    substring = "4";
+                                    break;
+                                case "涓湀":
+                                    substring = "3";
+                                    break;
+                                case "澶�":
+                                    substring = "1";
+                                    break;
+                                case "骞�":
+                                    substring = "5";
+                                    break;
+                                case "鍛�":
+                                    substring = "2";
+                                    break;
+                                case "瀛e害":
+                                    substring = "4";
+                                    break;
+                                default:
+                            }
+                            maintPlanBo.setMaintCycleUnit(substring);
+                        }
+                    } else {
+                        maintPlanBo.setMaintCycle(Long.parseLong(period));
+                        maintPlanBo.setMaintCycleUnit("");
+                    }
+                } catch (NumberFormatException e) {
+                    failureNum++;
+                    continue;
+                }
+
+                // 鏈堜唤鍒ゆ柇浼樺寲
+                boolean monthFound = false;
+                for (int i = 0; i < monthFields.length; i++) {
+                    try {
+                        String monthValue = (String) MaintCheckItemVo.class
+                            .getMethod("get" + StringUtils.capitalize(monthFields[i]))
+                            .invoke(itemVo);
+
+                        if (StringUtils.isNotBlank(monthValue)) {
+                            String month = String.format("%02d", i+1); // 淇濊瘉涓や綅鏈堜唤
+                            maintPlanBo.setMaintFirstTime(DateUtils.parseDate(year + "-" + month + "-01"));
+                            monthFound = true;
+                            break;
+                        }
+                    } catch (Exception e) {
+                        // 鍙嶅皠寮傚父澶勭悊锛岀户缁笅涓�涓湀浠�
+                        continue;
+                    }
+                }
+
+                if (!monthFound) {
+                    failureNum++;
+                    continue;
+                }
+
+                if (maintPlanBo.getMaintFirstTime() != null) {
+                    Date firstTime = maintPlanBo.getMaintFirstTime();
+                    Date nextTime = calcNextTime(firstTime, maintPlanBo.getMaintCycle().intValue(), 1);
+                    maintPlanBo.setMaintNextTime(nextTime);
+                }
+
+                // 濡傛灉鍏佽瑕嗙洊锛屽垯鍒犻櫎宸插瓨鍦ㄧ殑鐩稿悓鏉′欢璁板綍
+                if (updateSupport) {
+                    LambdaQueryWrapper<EimsMaintPlan> deleteWrapper = Wrappers.lambdaQuery();
+                    deleteWrapper.eq(EimsMaintPlan::getEquId, maintPlanBo.getEquId())
+                        .eq(EimsMaintPlan::getMaintName, maintPlanBo.getMaintName())
+                        .eq(EimsMaintPlan::getStatus, maintPlanBo.getStatus())
+                        .eq(EimsMaintPlan::getMaintCycle, maintPlanBo.getMaintCycle())
+                        .eq(EimsMaintPlan::getMaintCycleUnit, maintPlanBo.getMaintCycleUnit());
+                    baseMapper.delete(deleteWrapper);
+                }
+
+                if (!insertByBo(maintPlanBo)) {
+                    failureNum++;
+                } else {
+                    successNum++;
+                }
             }
 
-            if (maintPlanBo.getMaintFirstTime() != null) {
-                Date firstTime = maintPlanBo.getMaintFirstTime();
-                Date nextTime = calcNextTime(firstTime, maintPlanBo.getMaintCycle().intValue(), 1);
-                maintPlanBo.setMaintNextTime(nextTime);
-            }
-
-            // 濡傛灉鍏佽瑕嗙洊锛屽垯鍒犻櫎宸插瓨鍦ㄧ殑鐩稿悓鏉′欢璁板綍
-            if (updateSupport) {
-                LambdaQueryWrapper<EimsMaintPlan> deleteWrapper = Wrappers.lambdaQuery();
-                deleteWrapper.eq(EimsMaintPlan::getEquId, maintPlanBo.getEquId())
-                    .eq(EimsMaintPlan::getMaintName, maintPlanBo.getMaintName())
-                    .eq(EimsMaintPlan::getStatus, maintPlanBo.getStatus())
-                    .eq(EimsMaintPlan::getMaintCycle, maintPlanBo.getMaintCycle())
-                    .eq(EimsMaintPlan::getMaintCycleUnit, maintPlanBo.getMaintCycleUnit());
-                baseMapper.delete(deleteWrapper);
-            }
-
-            if (!insertByBo(maintPlanBo)) {
-                failureNum++;
-                failureMsg.append(failureNum).append("銆佽澶囷細").append(eimsEquVo.getEquName()).append("锛屽鍏ュけ璐�<br>");
+            // 濡傛灉澶辫触鏉′欢灏忎簬1鍒欎笉鎵撳嵃淇℃伅
+            if (failureNum <= 0) {
+                return "鎴愬姛锛�";
             } else {
-                successNum++;
-                successMsg.append("<br/>").append(successNum).append("銆佽澶囷細").append(eimsEquVo.getEquName()).append("锛屽鍏ユ垚鍔�");
+                return is.getOriginalFilename() + " 瀵煎叆鎴愬姛锛�" + successNum + "鏉★紝瀵煎叆澶辫触锛�" + failureNum + "鏉�";
             }
-        }
 
-    if (failureNum > 0) {
-        failureMsg.insert(0, "寰堟姳姝夛紝瀵煎叆澶辫触锛佸叡 " + failureNum + " 鏉℃暟鎹牸寮忎笉姝g‘锛岄敊璇涓嬶細");
-        return failureMsg.toString();
-    } else {
-        successMsg.insert(0, "鎭枩鎮紝鏁版嵁宸插叏閮ㄥ鍏ユ垚鍔燂紒鍏� " + successNum + " 鏉★紝鏁版嵁濡備笅锛�");
-        return successMsg.toString();
+        } catch (Exception e) {
+            return is.getOriginalFilename() + " 瀵煎叆寮傚父锛�" + e.getMessage();
+        }
     }
-}
+
 
 
 private Date calcNextTime(Date firstTime, int intervalMonths, int initialOffset) {

--
Gitblit v1.9.3