From 25c3725851dd323892675dfa4a60fb198c8dc4ed Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期四, 04 九月 2025 17:37:09 +0800
Subject: [PATCH] 设备管理技术状态鉴定、设备保养、设备维修下所有列表添加使用部门展示

---
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamMaintenanceStandardController.java    |  209 +++++++++++++++++++++-------------------------------
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java |    7 -
 2 files changed, 87 insertions(+), 129 deletions(-)

diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamMaintenanceStandardController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamMaintenanceStandardController.java
index 59099a6..db0db28 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamMaintenanceStandardController.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamMaintenanceStandardController.java
@@ -24,6 +24,7 @@
 import org.jeecg.modules.eam.service.IEamMaintenanceStandardService;
 import org.jeecg.modules.eam.vo.EamMaintenanceStandardVo;
 import org.jeecg.modules.system.service.ISysBusinessCodeRuleService;
+import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -33,6 +34,9 @@
 import javax.servlet.http.HttpServletRequest;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 淇濆吇鏍囧噯
@@ -309,72 +313,83 @@
         }
     }
 
-
     /**
      * 浜屼繚瀵煎叆
-     */
+    */
     @PostMapping("/importSecondMaintenanceStandard")
     public Result<?> importSecondMaintenanceStandard(HttpServletRequest request) {
         try {
             MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
-            Map<String, String> results = new LinkedHashMap<>();
             Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
-
-            // 缁熻瀵煎叆缁撴灉
-            int successCount = 0;
-            int failureCount = 0;
-            Result<?> importResult = new Result<>();
-
-            // 鐢ㄤ簬鏀堕泦鎵�鏈夋湭鎵惧埌鐨勮澶囩紪鐮�
-            List<String> allNotFoundCodes = new ArrayList<>();
-
+            int totalFiles = fileMap.size();
+            List<String> successFileNames = new ArrayList<>();
+            List<String> failedFileNames = new ArrayList<>();
+            Map<String, String> failedFiles = new LinkedHashMap<>();
+            int successDeviceCount = 0;
+            List<String> notFoundCodes = new ArrayList<>();
             for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
                 MultipartFile file = entity.getValue();
                 String fileName = file.getOriginalFilename();
-                importResult = eamMaintenanceStandardService.importMaintenanceStandard(file, "SECOND", null);
-
-                if (importResult.isSuccess()) {
-                    // 妫�鏌ユ槸鍚﹀寘鍚儴鍒嗘垚鍔熶俊鎭�
-                    String message = importResult.getMessage();
-                    if (message.contains("浠ヤ笅璁惧缂栫爜鏈壘鍒帮細")) {
-                        // 鎻愬彇鏈壘鍒扮殑璁惧缂栫爜
-                        String notFoundPart = message.substring(message.indexOf("浠ヤ笅璁惧缂栫爜鏈壘鍒�") + 9);
-                        allNotFoundCodes.addAll(Arrays.asList(notFoundPart.split(", ")));
-
-                        // 淇敼涓洪儴鍒嗘垚鍔熸秷鎭�
-                        importResult.setMessage(message.substring(0, message.indexOf("锛涗絾")));
-                    }
-                    successCount++;
-                } else {
-                    results.put(fileName, importResult.getMessage());
-                    failureCount++;
-                }
+                Result<?> importResult = eamMaintenanceStandardService.importMaintenanceStandard(file, "SECOND", null);
+                successDeviceCount = getSuccessDeviceCount(successFileNames, failedFileNames, failedFiles, successDeviceCount, notFoundCodes, fileName, importResult);
             }
-
-            // 濡傛灉鏈夋湭鎵惧埌鐨勮澶囩紪鐮侊紝娣诲姞鍒版渶缁堢粨鏋�
-            if (!allNotFoundCodes.isEmpty()) {
-                String notFoundMsg = "浠ヤ笅璁惧缂栫爜鏈壘鍒�" + String.join(", ", allNotFoundCodes);
-                if (successCount > 0) {
-                    // 閮ㄥ垎鎴愬姛
-                    return Result.ok("閮ㄥ垎瀵煎叆鎴愬姛锛屾垚鍔熸枃浠舵暟锛�" + successCount +
-                            "锛屽け璐ユ枃浠舵暟锛�" + failureCount + "锛�" + notFoundMsg);
-                } else {
-                    // 鍏ㄩ儴澶辫触
-                    return Result.error("瀵煎叆澶辫触锛�" + notFoundMsg);
-                }
-            }
-
-            if (successCount == 1) {
-                return importResult;
-            }
-
-            // 鏋勫缓鏈�缁堝搷搴�
-            return getResult(results, fileMap.size(), successCount, failureCount);
-
+            // 鏋勫缓鍝嶅簲
+            return getResult(totalFiles, successFileNames, failedFileNames, failedFiles, successDeviceCount, notFoundCodes);
         } catch (Exception e) {
             log.error("瀵煎叆澶勭悊寮傚父", e);
             return Result.error("瀵煎叆澶勭悊澶辫触: " + e.getMessage());
         }
+    }
+
+    @NotNull
+    private Result<?> getResult(int totalFiles, List<String> successFileNames, List<String> failedFileNames, Map<String, String> failedFiles, int successDeviceCount, List<String> notFoundCodes) {
+        if (!failedFiles.isEmpty()) {
+            String errorMsg = String.format("澶辫触鏂囦欢鏁帮細%d锛屽け璐ユ枃浠跺悕锛�%s锛屽け璐ュ師鍥狅細%s",
+                    totalFiles,
+                    String.join(",", failedFileNames),
+                    failedFiles.entrySet().stream()
+                            .map(e -> e.getKey() + ":" + e.getValue())
+                            .collect(Collectors.joining("锛�")));
+            return Result.error(errorMsg);
+        }
+
+        if (!notFoundCodes.isEmpty()) {
+            return Result.ok(String.format("鎴愬姛瀵煎叆鏂囦欢鏁帮細%d锛屾枃浠跺悕锛�%s锛屾垚鍔熷鍏ヨ澶囨暟锛�%d锛屾湭鎵惧埌鐨勮澶囩紪鐮侊細%s",
+                    totalFiles,
+                    String.join(",", successFileNames),
+                    successDeviceCount,
+                    String.join(",", notFoundCodes)));
+        }
+
+        return Result.ok(String.format("鎴愬姛瀵煎叆鏂囦欢鏁帮細%d锛屾枃浠跺悕锛�%s锛屾垚鍔熷鍏ヨ澶囨暟锛�%d",
+                totalFiles,
+                String.join(",", successFileNames),
+                successDeviceCount));
+    }
+
+    private int getSuccessDeviceCount(List<String> successFileNames, List<String> failedFileNames, Map<String, String> failedFiles, int successDeviceCount, List<String> notFoundCodes, String fileName, Result<?> importResult) {
+        if (importResult.isSuccess()) {
+            successFileNames.add(fileName);
+            String message = importResult.getMessage();
+            // 鎻愬彇璁惧鏁�
+            Pattern devicePattern = Pattern.compile("璁惧鏁帮細(\\d+)");
+            Matcher deviceMatcher = devicePattern.matcher(message);
+            if (deviceMatcher.find()) {
+                successDeviceCount += Integer.parseInt(deviceMatcher.group(1));
+            }
+            // 妫�鏌ユ湭鎵惧埌鐨勮澶囩紪鐮�
+            if (message.contains("浠ヤ笅璁惧缂栫爜鏈壘鍒�")) {
+                int colonIndex = message.indexOf("锛�", message.indexOf("浠ヤ笅璁惧缂栫爜鏈壘鍒�"));
+                if (colonIndex != -1) {
+                    String notFoundPart = message.substring(colonIndex + 1).replaceAll("[銆傦紱锛宂", "");
+                    notFoundCodes.addAll(Arrays.asList(notFoundPart.split("\\s*,\\s*")));
+                }
+            }
+        } else {
+            failedFileNames.add(fileName);
+            failedFiles.put(fileName, importResult.getMessage());
+        }
+        return successDeviceCount;
     }
 
     /**
@@ -384,61 +399,21 @@
     public Result<?> importThirdMaintenanceStandard(HttpServletRequest request) {
         try {
             MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
-            Map<String, String> results = new LinkedHashMap<>();
             Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
-
-            // 缁熻瀵煎叆缁撴灉
-            int successCount = 0;
-            int failureCount = 0;
-            Result<?> importResult = new Result<>();
-
-            // 鐢ㄤ簬鏀堕泦鎵�鏈夋湭鎵惧埌鐨勮澶囩紪鐮�
-            List<String> allNotFoundCodes = new ArrayList<>();
-
+            int totalFiles = fileMap.size();
+            List<String> successFileNames = new ArrayList<>();
+            List<String> failedFileNames = new ArrayList<>();
+            Map<String, String> failedFiles = new LinkedHashMap<>();
+            int successDeviceCount = 0;
+            List<String> notFoundCodes = new ArrayList<>();
             for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
                 MultipartFile file = entity.getValue();
                 String fileName = file.getOriginalFilename();
-                // 淇锛氫笁淇濆鍏ュ簲璇ヤ娇鐢�"THIRD"绫诲瀷
-                importResult = eamMaintenanceStandardService.importMaintenanceStandard(file, "THIRD", null);
-
-                if (importResult.isSuccess()) {
-                    // 妫�鏌ユ槸鍚﹀寘鍚儴鍒嗘垚鍔熶俊鎭�
-                    String message = importResult.getMessage();
-                    if (message.contains("浠ヤ笅璁惧缂栫爜鏈壘鍒帮細")) {
-                        // 鎻愬彇鏈壘鍒扮殑璁惧缂栫爜
-                        String notFoundPart = message.substring(message.indexOf("浠ヤ笅璁惧缂栫爜鏈壘鍒�") + 9);
-                        allNotFoundCodes.addAll(Arrays.asList(notFoundPart.split(", ")));
-
-                        // 淇敼涓洪儴鍒嗘垚鍔熸秷鎭�
-                        importResult.setMessage(message.substring(0, message.indexOf("锛涗絾")));
-                    }
-                    successCount++;
-                } else {
-                    results.put(fileName, importResult.getMessage());
-                    failureCount++;
-                }
+                Result<?> importResult = eamMaintenanceStandardService.importMaintenanceStandard(file, "THIRD", null);
+                successDeviceCount = getSuccessDeviceCount(successFileNames, failedFileNames, failedFiles, successDeviceCount, notFoundCodes, fileName, importResult);
             }
-
-            // 濡傛灉鏈夋湭鎵惧埌鐨勮澶囩紪鐮侊紝娣诲姞鍒版渶缁堢粨鏋�
-            if (!allNotFoundCodes.isEmpty()) {
-                String notFoundMsg = "浠ヤ笅璁惧缂栫爜鏈壘鍒�" + String.join(", ", allNotFoundCodes);
-                if (successCount > 0) {
-                    // 閮ㄥ垎鎴愬姛
-                    return Result.ok("閮ㄥ垎瀵煎叆鎴愬姛锛屾垚鍔熸枃浠舵暟锛�" + successCount +
-                            "锛屽け璐ユ枃浠舵暟锛�" + failureCount + "锛�" + notFoundMsg);
-                } else {
-                    // 鍏ㄩ儴澶辫触
-                    return Result.error("瀵煎叆澶辫触锛�" + notFoundMsg);
-                }
-            }
-
-            if (successCount == 1) {
-                return importResult;
-            }
-
-            // 鏋勫缓鏈�缁堝搷搴�
-            return getResult(results, fileMap.size(), successCount, failureCount);
-
+            // 鏋勫缓鍝嶅簲
+            return getResult(totalFiles, successFileNames, failedFileNames, failedFiles, successDeviceCount, notFoundCodes);
         } catch (Exception e) {
             log.error("瀵煎叆澶勭悊寮傚父", e);
             return Result.error("瀵煎叆澶勭悊澶辫触: " + e.getMessage());
@@ -454,37 +429,21 @@
         if (eamMaintenanceStandard == null) {
             return Result.error("璇烽�夋嫨闇�瑕佸崌鐗堢殑淇濆吇鏍囧噯");
         } else {
-            Result<?> importResult;
             switch (eamMaintenanceStandard.getMaintenanceCategory()) {
                 case "POINT_INSPECTION":
-                    // 鐐规鍗囩増瀵煎叆
-                    importResult = eamMaintenanceStandardService.importPointInspectionExcel(file, id);
-                    break;
+                    //鐐规鍗囩増瀵煎叆
+                    return eamMaintenanceStandardService.importPointInspectionExcel(file,id);
                 case "SECOND_MAINTENANCE":
-                    // 浜屼繚鍗囩増瀵煎叆
-                    importResult = eamMaintenanceStandardService.importMaintenanceStandard(file, "SECOND", id);
-                    break;
+                    //浜屼繚鍗囩増瀵煎叆
+                    return eamMaintenanceStandardService.importMaintenanceStandard(file, "SECOND",id);
                 case "THIRD_MAINTENANCE":
-                    // 涓変繚鍗囩増瀵煎叆
-                    importResult = eamMaintenanceStandardService.importMaintenanceStandard(file, "THIRD", id);
-                    break;
+                    //涓変繚鍗囩増瀵煎叆
+                    return eamMaintenanceStandardService.importMaintenanceStandard(file, "THIRD",id);
                 default:
-                    return Result.error("涓嶆敮鎸佺殑淇濆吇绫诲瀷");
-            }
-
-            // 澶勭悊鍗囩増瀵煎叆涓殑璁惧鏈壘鍒版儏鍐�
-            if (importResult.isSuccess()) {
-                String message = importResult.getMessage();
-                if (message.contains("浠ヤ笅璁惧缂栫爜鏈壘鍒帮細")) {
-                    // 鎻愬彇鏈壘鍒扮殑璁惧缂栫爜
-                    String notFoundPart = message.substring(message.indexOf("浠ヤ笅璁惧缂栫爜鏈壘鍒�") + 9);
-                    return Result.error("鍗囩増瀵煎叆澶辫触锛�" + notFoundPart);
-                }
-                return importResult;
-            } else {
-                return importResult;
+                    break;
             }
         }
+        return Result.error("鍗囩増瀵煎叆澶辫触");
     }
 
     private Result<?> getResult(Map<String, String> results, int fileCount, int successCount, int failureCount) {
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java
index a3171aa..eb3d9ca 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java
@@ -1448,14 +1448,13 @@
             obsoleteOldVersionsByCompositeKey(deviceVersionMap);
 
             if (!notFoundEquipmentCodes.isEmpty()) {
-                String successMsg = fileName + "閮ㄥ垎瀵煎叆鎴愬姛锛岃澶囨暟锛�" + standards.size() +
-                        "锛岄」鐩暟锛�" + allItems.size();
+                String successMsg = fileName + "閮ㄥ垎瀵煎叆鎴愬姛锛岃澶囨暟锛�" + standards.size();
                 String errorMsg = "浠ヤ笅璁惧缂栫爜鏈壘鍒帮細" + String.join(", ", notFoundEquipmentCodes);
                 return Result.ok(successMsg + "锛涗絾" + errorMsg);
             }
 
-            return Result.ok(fileName + "瀵煎叆鎴愬姛锛岃澶囨暟锛�" + standards.size() + "锛岄」鐩暟锛�" + allItems.size());
-
+            // 淇敼鐐癸細鍙繑鍥炶澶囨暟閲�
+            return Result.ok(fileName + "瀵煎叆鎴愬姛锛岃澶囨暟锛�" + standards.size());
 
         } catch (ImportException e) {
             return Result.error(fileName + "锛�" + e.getMessage());

--
Gitblit v1.9.3