From 0d06048c5d560e301bf17fad476975c8ffffcb56 Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期五, 05 九月 2025 16:07:31 +0800
Subject: [PATCH] 添加三级保养工作计划单生成规则

---
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamMaintenanceStandardController.java |  210 +++++++++++++++++++++-------------------------------
 1 files changed, 84 insertions(+), 126 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..bf01e42 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
@@ -20,10 +20,10 @@
 import org.jeecg.modules.eam.entity.EamMaintenanceStandard;
 
 import org.jeecg.modules.eam.request.EamMaintenanceStandardRequest;
-import org.jeecg.modules.eam.service.IEamEquipmentService;
 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 +33,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 +312,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 +398,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 +428,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) {

--
Gitblit v1.9.3