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 |  135 +++++++++++++++++++++++++++++---------------
 1 files changed, 88 insertions(+), 47 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 11a2161..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
@@ -7,21 +7,23 @@
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 
+import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.constant.CommonConstant;
 
 import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.eam.constant.BusinessCodeConst;
 
 import org.jeecg.modules.eam.constant.MaintenanceStandardStatusEnum;
 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;
@@ -31,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: 淇濆吇鏍囧噯
@@ -47,8 +52,6 @@
     private IEamMaintenanceStandardService eamMaintenanceStandardService;
     @Autowired
     private ISysBusinessCodeRuleService businessCodeRuleService;
-    @Autowired
-    private IEamEquipmentService eamEquipmentService;
 
     /**
      * 娴佺▼鍚姩,淇濆瓨瀵瑰簲鐨勬暟鎹�
@@ -59,6 +62,11 @@
     @ApiOperation(value = "淇濆吇鏍囧噯-娴佺▼鍚姩淇濆瓨瀵瑰簲鐨勬暟鎹�", notes = "淇濆吇鏍囧噯-娴佺▼鍚姩淇濆瓨瀵瑰簲鐨勬暟鎹�")
     @GetMapping(value = "/saveEamMaintenanceStandardProcess")
     public Result<?> saveEamMaintenanceStandardProcess(String id) {
+        // 鏍¢獙棰嗗彇鏉冮檺
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        if (!BusinessCodeConst.PCR0002.equals(user.getPost())) {
+            return Result.error("濉姤澶辫触,娌℃湁濉姤鏉冮檺锛�,闇�缁翠慨宸ユ彁浜�");
+        }
         return eamMaintenanceStandardService.saveEamMaintenanceStandardProcess(id);
     }
 
@@ -304,40 +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;
-
+            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();
-                Result<?> importResult=eamMaintenanceStandardService.importMaintenanceStandard(file, "SECOND",null);
-                if (importResult.isSuccess()) {
-                    successCount++;
-                } else {
-                    results.put(fileName, importResult.getMessage());
-                    failureCount++;
-                }
+                Result<?> importResult = eamMaintenanceStandardService.importMaintenanceStandard(file, "SECOND", null);
+                successDeviceCount = getSuccessDeviceCount(successFileNames, failedFileNames, failedFiles, successDeviceCount, notFoundCodes, fileName, 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;
     }
 
     /**
@@ -347,28 +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;
-
+            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();
-                Result<?> importResult= eamMaintenanceStandardService.importMaintenanceStandard(file, "THIRD",null);
-                if (importResult.isSuccess()) {
-                    successCount++;
-                } else {
-                    results.put(fileName, importResult.getMessage());
-                    failureCount++;
-                }
+                Result<?> importResult = eamMaintenanceStandardService.importMaintenanceStandard(file, "THIRD", null);
+                successDeviceCount = getSuccessDeviceCount(successFileNames, failedFileNames, failedFiles, successDeviceCount, notFoundCodes, fileName, 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());
@@ -377,17 +421,14 @@
 
     /**
      * 鍗囩増瀵煎叆
-     * @param id,file
-     * @return
      */
-    @ApiOperation(value = "鍗囩増瀵煎叆", notes = "鍗囩増瀵煎叆")
     @PostMapping(value = "/importUpgrade")
-    public Result<?> importUpgrade(String id,MultipartFile file) {
-        EamMaintenanceStandard eamMaintenanceStandard=eamMaintenanceStandardService.getById(id);
-        if (eamMaintenanceStandard==null) {
+    public Result<?> importUpgrade(String id, MultipartFile file) {
+        EamMaintenanceStandard eamMaintenanceStandard = eamMaintenanceStandardService.getById(id);
+        if (eamMaintenanceStandard == null) {
             return Result.error("璇烽�夋嫨闇�瑕佸崌鐗堢殑淇濆吇鏍囧噯");
-        }else {
-            switch (eamMaintenanceStandard.getMaintenanceCategory()){
+        } else {
+            switch (eamMaintenanceStandard.getMaintenanceCategory()) {
                 case "POINT_INSPECTION":
                     //鐐规鍗囩増瀵煎叆
                     return eamMaintenanceStandardService.importPointInspectionExcel(file,id);

--
Gitblit v1.9.3