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